我的消息子级具有属性为read的子级。我想将其设置为true。如何在javascript中做到这一点? (我想在单个命令中将所有消息子级的read属性设置为true)。
我尝试了let ref = yield firebase.database().ref(groups/${groupId}/messages).update({read:true})
,但是没有用。
我也想知道这是否是数据库的好结构
感谢:)
答案 0 :(得分:2)
您首先必须阅读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
“我还想知道这是否是数据库的良好结构”->这是一个相当广泛的问题,答案取决于许多因素,包括您的用户要求,应用程序的屏幕等... < / p>