检测一个ref中的更改并写入另一个Firebase Cloud

时间:2017-09-15 12:17:54

标签: javascript firebase firebase-realtime-database google-cloud-functions

我正在我的应用中使用此代码尝试 Firebase云功能,以便在创建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} /)。此致

2 个答案:

答案 0 :(得分:2)

根据您是希望更新以当前用户身份还是以管理员身份运行,您可以使用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 :(得分:1)

版本1.0发生了变化,adminRef已过时,您应仅使用ref进行管理员访问,并且event已由snapshot和{{1}取代},请参见此处:cloud functions documentation 1.0 API changes

弗兰克的例子变成:

context