javascript - 如何在 firebase 数据库中的所有消息子级中将 "read"更新为 true

标签 javascript reactjs firebase firebase-realtime-database

database structure

我的消息 child 有 child 的属性已读。我想将其设置为 true。我如何在 JavaScript 中做到这一点? (我想在单个命令中读取设置为 true 的所有子消息的属性)。 我试过let ref = yield firebase.database().ref(groups/${groupId}/messages).update({read:true})但没有用。 我也想知道这是否是一个好的数据库结构

谢谢:)

最佳答案

您首先必须读取 messages 节点以获取其所有子节点(使用 once() 方法),然后使用 update()一次调用更新所有子节点的方法。

下面的代码应该可以解决问题:

        //set groupId value
        var db = firebase.database();
        db.ref(`groups/${groupId}/messages`)
        .once('value')
        .then(function (snapshot) {
              var updates = {};
              snapshot.forEach(function (childSnapshot) {
                  var key = childSnapshot.key;
                  updates[`groups/${groupId}/messages/${key}/read`] = true;
              });
              return db.ref().update(updates);
         });

另请参阅https://firebase.google.com/docs/database/web/read-and-write#update_specific_fields

<小时/>

“我也想知道这对于数据库来说是否是一个好的结构” -> 这是一个相当广泛的问题,其答案取决于许多因素,包括您的用户要求、应用程序的屏幕等...

关于javascript - 如何在 firebase 数据库中的所有消息子级中将 "read"更新为 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55904052/

相关文章:

java - 当 Firebase 中的值发生更改时,Sharedpreferences 值会更新

android - 在android中使用进度条将大小<250KB的文件上传到Firebase

javascript - Google Charts - API 请求和 jQuery 的 DataTable 问题

javascript - 在 'react-router-dom' 中的 Route 组件属性上传递变量

android - Firebase Perf 不运行测试应用程序 :transformClassesWithFirebasePerformancePluginForDebugAndroidTest

javascript - 通过具有已知键名的 props 访问数据 React js

reactjs - 如何在React Native App中直接发送电子邮件

javascript - Jquery Bootstrap Dropdown 在使用 PHP 中的 foreach 循环填充的表中不起作用

javascript - 如何更改对象的构造函数?

javascript - 在多个地方放置相同的 dojo datagrid