所以,我有一个firebase结构如下:
"Posts" : {
"0" : {
"code": 12345TG4
"Likes" : 59
},
"1" : {
"code": RT560451
"Likes" : 12
}
}
理想情况下,我想做的是:
var updateData = {
Likes: 74
}
Posts.child(id).update(updateData);
但我不提前知道UiD,但我确实拥有'代码'的价值,这本身就是一个独特的价值。
如何根据Firebase中已知的“代码”值创建可以更新“Likes”值的查询?
答案 0 :(得分:4)
正如道格评论和罗德里戈所说,你必须首先根据代码查询该项目,然后才能更新它:
var ref = firebase.database().ref();
ref.child("Posts").orderByChild("code").equalTo("12345TG4").once("value", function(snapshot) {
snapshot.forEach(function(child) {
child.ref.update(updateData);
});
});
虽然上述方法有效,但您应该考虑为什么要将帖子存储在数组索引下,然后它们也已经有了唯一的ID。在FireSQL等NoSQL解决方案中,将这些帖子存储在代码下更为惯用:
"Posts" : {
"12345TG4" : {
"Likes" : 59
},
"RT560451" : {
"Likes" : 12
}
}
您要更新的内容:
ref.child("Posts").child("12345TG4").update({ Likes: 74 });
甚至:
"PostLikes" : {
"12345TG4" : 59,
"RT560451" : 12
}
然后:
ref.child("PostLikes/12345TG4/Likes").set(74);
答案 1 :(得分:0)
尝试这样做。
var ref = firebase.database().ref("Posts");
ref.orderByChild("code").on("child_added", function(snapshot) {
snapshot.ref.update(updateData);
});
祝你好运