我正在我的应用中使用此代码尝试 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} /)。此致
答案 0 :(得分:2)
根据您是希望更新以当前用户身份还是以管理员身份运行,您可以使用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 :(得分:1)
版本1.0发生了变化,adminRef
已过时,您应仅使用ref
进行管理员访问,并且event
已由snapshot
和{{1}取代},请参见此处:cloud functions documentation 1.0 API changes
弗兰克的例子变成:
context