Firebase 更新结果集 NodeJS

Firebase Update resultset NodeJS

为什么我似乎无法更新结果集。我有 1000 个项目,我查询 Firebase 并取回一个 DataSnapShot 数组。我想检查数组的每个元素,如果条件存在,则将 "type" 更改为 "C"。我没有收到任何错误,但似乎没有应用更新。我在返回的承诺中这样做,但更新是 "ignored".

var db = admin.database();
var ref = db.ref("/calendars");

ref.once("value", function(snapshot) {

  snapshot.forEach(function(data) {
    var obj = data.val();
    if (someconditionIsTrue) {
      var objToUpdate = `calendars\${data.key}`;
      console.log(`Should update ${objToUpdate}`);

      var entryRef = db.ref("/calendars").child(data.key).child('type');
      entryRef.transaction(function(t) {
        console.log(`TYPE: ${t}`); // DISPLAYS NULL EVEN THOUGH THERE IS A CHAR IN DB
        return "C"; // Should change TYPE in the record to a "C"
      });
    }

也尝试在 forEach 中做一个集合,但这也不起作用(这就是为什么我认为我必须使用事务)。

弗兰克以最好的方式回答了这个问题:

Firebase 数据库事务是比较和设置的。回调将立即被调用,并根据客户端对当前值的最佳猜测。通常这将为空。您告诉它新值将基于该值,您的回调最终将再次调用,并使用对当前值的更新猜测。参见 Whosebug。com/questions/33578887/… – Frank van Puffelen 18 年 11 月 21 日在 16:21