有没有一种方法可以将最近的更改存储在实时数据库中?

时间:2020-09-11 10:41:29

标签: node.js firebase firebase-realtime-database google-cloud-functions

我正在使用具有以下数据结构的实时数据库。我可以在webapp中添加更多具有自动生成ID的计算机,并且所有计算机都具有相同的数据结构。

machines
  -autogeneratedID1
    -id1 : 1
    -id2 : 2
  -autogeneratedID2
    -id1 : 4
    -Id2 : 3

我想跟踪自动生成的ID内ID的变化,如果自动生成的ID1上的ID1从1变为3,我希望能返回带有时间戳的更改。

我正在尝试通过以下代码使用云功能:

exports.foo = functions.database.ref("machines/").onUpdate((change) => {
    const before = change.before.val();  // DataSnapshot before the change
    const after = change.after.val();  // DataSnapshot after the change


    console.log(before);
    console.log(after);
    return null;

但是之前和之后的对象向我返回了数据库所有结构的JSON。 我的第一个猜测是比较两个JSON对象并检测更改的位置并添加时间戳。然后我要将更改存储在数据库中。

有没有办法做到这一点?

最好的问候

1 个答案:

答案 0 :(得分:1)

终于找到了答案,这是我正在使用的代码:

exports.foo = functions.database.ref("machines/{machineID}/{ValueID}").onUpdate((change,context) => {
    const before = change.before.val();  // DataSnapshot before the change
    const after = change.after.val();    // DataSnapshot after the change

    const machineID = context.params.machineID; //Machine ID
    const valueID = context.params.ValueID;     //Value ID
    
    console.log("MachineID: " + machineID + " " +"IDChanged: " + valueID + " " + "BeforeValue: " + before +" "+ "AfterValue: " + after);


    return null;
});