我有一个Firebase数据模型:
Database:
tweets
favorite:Bool
tweetText: String
userID: String
timestamp: Double
我想运行一个方法,说“删除最近2个小时内未收藏的推文”
这就是控制台中的内容(//是我需要帮助的地方):
const functions = require('firebase-functions')
const admin = require('firebase-admin')
admin.initializeApp();
exports.deleteOldItems = functions.database.ref(‘/tweets/{tweet}’)
.onWrite((change, context) => {
var ref = change.after.ref.parent;
var now = Date.now();
var cutoff = now - 2 * 60 * 60 * 1000;
var oldItemsQuery = ref.orderByChild('timestamp').endAt(cutoff);
return oldItemsQuery.once('value', function(snapshot) {
var updates = {};
snapshot.forEach(function(child) {
// Delete Tweet BUT ONLY IF FAVORITE == True????
//Help here
updates[child.key] = null
});
// execute all updates in one go and return the result to end the function
return ref.update(updates);
});
});
答案 0 :(得分:1)
您正在寻找这样的东西:
exports.deleteOldItems = functions.database.ref(‘/tweets/{tweet}’)
.onWrite((change, context) => {
var ref = change.after.ref.parent;
var now = Date.now();
var cutoff = now - 2 * 60 * 60 * 1000;
var oldItemsQuery = ref.orderByChild('timestamp').endAt(cutoff);
return oldItemsQuery.once('value', function(snapshot) {
var updates = {};
snapshot.forEach(function(child) {
if (!child.val().favorite) {
updates[child.key] = null
}
});
// execute all updates in one go and return the result to end the function
return ref.update(updates);
});
});
})
如果您不熟悉JavaScript(在其中使用Firebase),那么Cloud Functions for Firebase并不是学习它的最简单方法。我建议先阅读Firebase documentation for Web developers和/或参加Firebase codelab for Web developer。它们涵盖了许多基本的JavaScript,Web和Firebase交互。您还可以在本地Node.js进程中使用Admin SDK,可以使用本地调试器对其进行调试。在那之后,您也将更有能力为Cloud Functions编写代码。