检测一个Ref的变化,并在另一个Firebase云中写入



我正在尝试使用此代码在我的应用中尝试 Firebase Cloud Functions 创建了2个小时后删除数据。

exports.deleteOldItems = functions.database.ref('/Rooms/{pushId}')
.onWrite(event => {
  var ref = event.data.ref.parent; // reference to the items
  var now = Date.now();
  var cutoff = now - 2 * 60 * 60 * 1000;
  var oldItemsQuery = ref.orderByChild('timestampCreated/timestamp').endAt(cutoff);
  return oldItemsQuery.once('value', function(snapshot) {
    // create a map with all children that need to be removed
    var updates = {};
    snapshot.forEach(function(child) {
      updates[child.key] = null
    });
    // execute all updates in one go and return the result to end the function
    return ref.update(updates);
  });
});

这有效。现在,我想在另一个 ref 中写入(例如:/users/{userId}/)每次删除数据时。问候

取决于您是否希望更新作为当前用户或管理员运行,可以使用event.data.refevent.data.adminRef并从那里工作:

exports.deleteOldItems = functions.database.ref('/Rooms/{pushId}')
.onWrite(event => {
  ...
  var ref = event.data.ref.root;
  return ref.child("/Users/123").set("New value");
});

在1.0版上发生了变化, adminRef已弃用,您应该仅使用 ref进行管理访问,而 event已由 snapshot and context替换,请参见此处,请参阅此处:云功能文档1.0 API更改

弗兰克的例子变为:

exports.deleteOldItems = functions.database.ref('/Rooms/{pushId}')
.onWrite((snapshot,context) => {
  ...
  var ref = snapshot.ref.root;
  return ref.child("/Users/123").set("New value");
});

相关内容

  • 没有找到相关文章

最新更新