2017-08-18 14 views
0

firebaseのapplyとtriggerの間のpromo idの下でノードを更新しようとしています。名前が既に存在する場所と同じ場所は更新されません。それは、名前を更新した後に注文を妨害します。私はupdate()で方法を試しましたが、失敗します。その後setWithPrority()私の他のノード(適用し、トリガー)を削除し、名前を更新した後に名前ノードだけを追加します.Noteデータはすでにfirebaseに存在し、名前を更新するだけです。firebase内の特定のIDで内側のデータを更新するには

マイスクリプト:

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}); 
    } 
}); 

マイ出力! enter image description here
注: 私はノードをトリガーして適用していません。私はpromoRuleName文字列しか持っていません。

期待される出力!

enter image description here

事前に

感謝を助けてください!

+0

あなたの名前のデータを適用またはプロモーションの対象にしたいですか? –

+0

@Gabriel Diez promoIdの下でしかし、この名前は、適用とトリガの間にある必要があり、第2のスクリーンショットを参照してください –

+0

私はあなたが欲しいものを参照してくださいなぜ私はあなたがそれをしたいと理解していない.. –

答えて

1

このスクリプトでは、このnode.try適用とトリガの間で注文するために正しく作品であるサンプルデータでは、それがで実現することができます共有しました。

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}); 
      } 

     }); 

まずIが適用されたノードの優先順位は、次にupdate()メソッドを使用して名前を更新ヌル。

1

コンソールで表示される順序は、「priority-then-key」に基づいています。 setWithPriority()と呼んで以来、自然/アルファベットの順序が乱されています。 setWithPriority()をもう呼び出さないことを強くお勧めします。この方法はFirebaseがorderByChild()をサポートする前の過去からの遺物です。

現在のデータで問題を解決するには、所有しているノードから優先度を削除する必要があります。参照してください

firebase.database().ref('/promotions/v1/22516/46/name').setPriority(null); 

What does priority mean in Firebase?

+0

更新データに適切なスクリプトを入力してください。上記のスクリプトは、ノードの最後に名前を追加します。 私のスクリプトはfirebase: firebase.database()。ref( '/ promotions/v1 /' + site + '/' + promoId + '/' + 'name')を更新しません。setPriority(promoRuleName、5); –

+0

あなたはこれを説明できますか? –

+0

優先度は設定しないでください。それらをクリアします。私のコードはそれを行う方法を示しています。 –

関連する問題