簡體   English   中英

如何在Firebase中使用特定ID更新內部數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM