假設我在「post」中有10000個孩子,每個節點都包含孩子的「用戶名」。如果「userA」在10000個數據中添加6000。我怎麼能在每個節點更新「用戶A」的「後」Firebase更新了很多孩子的價值
回答
火力地堡如果NOSQL模式,你不能把它應用直接查詢。您需要對所有節點應用迭代,並在用戶名爲「userA」時更新。
Thanks @Usman您能否舉一些例子來說明目的? – LIPONEF
@LIPONEF示例代碼在下面的一些答案中發佈,您可以根據自己的需要修改它們。 –
您需要知道所有用戶帖子。
你需要這樣的結構:
root
|
+-- posts
| |
| +-- $postId
| |
| +-- text: $text
| |
| +-- username: $username
|
+-- userPosts
| |
| +-- $userId
| |
| +-- $postId: true
採用這種結構可以檢索的所有帖子的ID爲用戶和更新帖子。
謝謝皮皮克斯,如果我把UID而不是用戶名。當我查詢每個帖子時,我得到的UID從另一個節點查詢用戶名(例如root-> users-> uid-> username =「userA」)。比較你的給定結構哪一個更好,因爲有人告訴我,我給出的例子可能會浪費你的Firebase流量成本。 – LIPONEF
你不必改變你的帖子結構只是添加userPosts或做像'postsRef.orderByChild(「用戶名」)。equalsTo(「userA」)'像'在@jorge回答 – Pipiks
@Pipiks在請求數據,你應該把userId也..我叫它在nosql中的定向關係 – faruk
如果你想從helloA更改文本你好我是一個,例如,代碼是這樣的:
DatabaseReference postReference = FirebaseDatabase.getInstance().getReference("posts");
postReference.orderByChild("username").equalsTo("userA")
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists())
for (DataSnapshot data : dataSnapshot.getChildren()) {
data.getRef().child("text").setValue("hello I'm A");
所以,你有一個dataSnapshot與每一個崗位與用戶名等於用戶A你可以迭代它並更改這些帖子
問題是關於更新字段用戶名。 我的建議是爲更新值創建臨時哈希映射。所以它只會更新所有帖子一次。
訣竅是,更新節點的孩子時,你可以把「the_key」用斜槓「/」加上你要更新,在這種情況下,該領域「用戶名」
DatabaseReference postDbRef = FirebaseDatabase.getInstance().getReference("posts");
Map<String, Object> updateValues = new HashMap<String, Object>();
String oldUserName = "userA";
String newUserName = "userA new";
postDbRef.orderByChild("username")
.equalTo(oldUserName)
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()){
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
updateValues.put(childSnapshot.getKey()+"/username", newUsername);
}
postDbRef.updateChildren(updateValues);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
;
爲了提高性能,我建議在數據庫規則中添加「.indexOn」。像這樣:
"posts": {
".indexOn": ["username"]
},
- 1. Firebase更新孩子的價值觀正在消除子女
- 2. 有價值的孩子的Firebase查詢
- 3. Firebase更新多個孩子錯誤
- 4. Firebase,不能增加孩子的價值
- 5. 更新CoreData增加了很多零值
- 6. 更新Firebase中的子值
- 7. Firebase JSON:需要訪問孩子,但每個孩子都有更多的孩子
- 8. Firebase,根據孩子的價值找到父母的關鍵
- 9. Firebase規則來訪問特定的孩子的價值
- 10. 如何從android中的firebase獲取孩子的價值?
- 11. 如何從Firebase中檢索所有孩子的價值?
- 12. 訪問孩子價值jquery
- 13. 取決於孩子的價值,以其他孩子的價值在火爐堡
- 14. Firebase:如何使用更改了表格的孩子?
- 15. Firebase,只得到新的孩子
- 16. Hibernate的一個一對多:在更新,改變了孩子不更新
- 17. 使用Swift更新Firebase中的子值
- 18. 有很多孩子的jquery選擇
- 19. XPATH - 有很多孩子的html
- 20. android性能:很多觀點vs有很多孩子的viewgroup
- 21. C#很多家長形成了一個孩子
- 22. Firebase - 如何更新許多孩子,而不是刪除AngularFire中的其他人
- 23. 從父代得到孩子的價值
- 24. jQuery元素動畫的孩子價值?
- 25. 謂詞總結孩子的價值
- 26. Rails的爲最新的孩子和搜索由它的價值
- 27. 更新孩子的狀態
- 28. 有很多值的更新列
- 29. 更新價值
- 30. 更新價值
你的結構你不能這樣做。 –
是否要將用戶名從「userA」更改爲另一個用戶名? – faruk
謝謝@ J.Doe您可以爲此提供示例結構嗎? – LIPONEF