【问题标题】:How to check the value a property of items from the Firebase database before deleting items如何在删除项目之前检查 Firebase 数据库中项目属性的值
【发布时间】:2018-08-29 23:12:31
【问题描述】:

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

【问题讨论】:

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


    【解决方案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 编写代码。

    【讨论】:

    • 谢谢弗兰克!我在 Cloud Functions 界面上苦苦挣扎。
    • 我在回答中添加的部分 (if (!child.val().favorite) {) 与 Cloud Functions 无关,因此我建议在更适合快速迭代实验的环境中了解它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-02
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多