我正在尝试使用此代码在我的应用中尝试 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.ref
或event.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");
});