如何在删除项目之前从Firebase数据库检查项目的属性值

时间:2018-08-29 15:02:59

标签: node.js firebase firebase-realtime-database

我有一个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);
                                   });
         });

1 个答案:

答案 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编写代码。