[英]Retrieving denormalized data in firebase
我是Firebase的新手,了解到我應該以非規范化的方式保存數據。 我保存了用戶編寫的一些目標。 我允許其他用戶添加評論。 很好 每當用戶提交評論時,該評論將保存在評論節點中,並且還可以通過向相關評論ID添加密鑰來更新目標。
**comments**
-LmkoRGfB5GX4Q8NKkBz
-LmkoTE3sdM3_PYuEtco
comment-text: "another comment"
time: 87293862
-LmlUwUdsUVH5ymTXDoj
-LmlyU2drjD6gI7GGZzp
**goals**
-user1
goalID1
comments
-LmkoTE3sdM3_PYuEtco: true
goal: "I struggle to wake up on time"
plan: "I will definitely wake up when the alarm clock ..."
在檢索有關目標的信息時,我不知道如何檢索注釋。 這是我檢索有關目標的信息的方式。 如何添加循環以獲取有關評論的信息?
firebase.database().ref('/goals/' + req.body.userId).orderByChild(goalId).equalTo("goalID1").on('value', (snapshot) => {
snapshot.forEach((item) => {
items.push({
key: item.key,
goal: item.val().goal,
plan: item.val().plan,
comments:item.val().comments
});
});
res.status(200).json(items)
這樣的事情應該可以解決問題:
firebase.database().ref('/goals/' + req.body.userId).orderByChild(goalId).equalTo("goalID1").on('value', (snapshot) => {
let promises = [];
var item;
snapshot.forEach((item) => {
item = {
key: item.key,
goal: item.val().goal,
plan: item.val().plan,
comments: []
}
snapshot.child('comments').forEach((commentKey) => {
let promise = firebase.database().ref('comments').child(commentKey.key).once('value');
});
});
Promise.all(promises).then((snapshots) => {
snapshots.forEach((snapshot) => {
item.comments.push(snapshot.val());
})
items.push(item);
res.status(200).json(items);
})
可能會出現一些語法和范圍錯誤,但這應該是一個大概的主意:您在循環中加載每個注釋,因此必須等待所有注釋加載后才能向調用方發送響應。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.