[英]How can I update inner data with specific id in firebase
我正在嘗試在Firebase中的Apply和Trigger位置之間的促銷編號下更新節點。 它不會更新名稱已經存在的相同位置。 更新名稱后會打亂順序。 我已經嘗試過使用update()
方法,但是失敗了。 然后setWithPrority()
刪除我的其他節點(應用和觸發器),並在更新名稱后僅添加名稱節點。注意,firebase中已經存在數據,只需更新名稱即可。
我的劇本:
firebase.database().ref('/promotions/v1/' + site + '/'+ promoId).once('value').then(function (snapshot) {
promo_data = snapshot.val();
if (promo_data != null) {
var refss = firebase.database().ref('/promotions/v1/' + site + '/'+ promoId );
refss.child('/').update({"name":promoRuleName});
}
});
我的輸出!
注意:我沒有觸發並應用node.I只有promoRuleName字符串。
預期的輸出!
請幫忙
提前致謝!
您在控制台中看到的順序基於“優先級-隨后-密鑰”。 自從您調用setWithPriority()
以來,自然/字母順序受到了干擾。 我強烈建議不要再調用setWithPriority()
,該方法是Firebase支持orderByChild()
之前的遺物。
要解決當前數據的問題,您需要從擁有優先級的節點中刪除優先級。 在您共享的樣本數據中,可以使用以下方法完成:
firebase.database().ref('/promotions/v1/22516/46/name').setPriority(null);
另請參閱: 優先級在Firebase中是什么意思?
此腳本可以正確應用,可以在Apply和Trigger節點之間進行排序。
firebase.database().ref('/promotions/v1/' + site + '/'+ promoId).once('value').then(function (snapshot) {
promo_data = snapshot.val();
if (promo_data != null) {
var refss = firebase.database().ref('/promotions/v1/' + site + '/'+ promoId + '/');
// First null the prority of apply node then update name.
firebase.database().ref('/promotions/v1/' + site + '/'+ promoId + '/'+'apply/').setPriority(null);
refss.update({'name': promoRuleName});
}
});
首先,我將應用節點的優先級設為空,然后使用update()
方法更新名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.