2016-11-05 14 views
1

こんにちは皆私はここで奇妙な振る舞いをしています。ユーザーがボタンをクリックすると、特定の子ノードを更新しようとします。ここに私のコードは次のとおりです。Firebase Web update()は他のすべての子ノードを削除します

var updates2 = {}; 
var offer = { 
    minusAccandShare: 2, 
} 
updates2['/offerLight/' + keyReal] = offer; 
updates2['/offer/' + keyReal] = offer; 
return firebase.database().ref().update(updates2); 

すべてが正常に動作して正しいノードが更新されますが、他の更新minusAccandShareのすべてが

を削除される一方、構造が似ている:

offer 
    jifdjsiavdas 
    minusAccandShare: -6 
    offerName: "Replacement" 
    offerText: "You have the choice to..." 
    ... 

そして、それは

なり
offer 
    jifdjsiavdas 
    minusAccandShare: 2 

firebaseで説明したように私は、このアプローチを使用複数のガイドとそれは常に魅力のように働いた。しかし、そこに私は完全に新しいキーを持つ新しいノードを作成したので、削除するものはありませんでした。

みんなありがとう:あなたはfirebase refs上に読むべきのようにD

答えて

4

コード内で実際に起こっていることは、次のとおりです。

あなたは完全にキーに書き込みを行い、データセット内のすべてのプロパティを消去します。

この

updates2['/offer/' + keyReal] = offer; 

は、その特定のキーでデータ全体を一掃します。

代わりにこれを試してみてください。これはあなたがあなたのfirebaseデータセットで指定されたプロパティを変更することを確認することができます

firebase.database().ref('offer/' + keyReal).update({ 
    minusAccandShare: 2, 
    }); 

私はこれが役に立ったと思っています。

+0

エベネザーが正しいです。この場合、「更新」機能ではなく「更新」機能を利用する場合でも、データオブジェクトは完全に上書きされます。私は彼が上記のように鍵を入れた後に私のオブジェクトを渡す必要がありました。 –

0

は思えます。あなたが更新しているので、あなたは、ルートDBオブジェクトは(私はFirebaseに空白の参照を渡されたことがないので、私は行動がfirebase.database().ref()を使用するのであるものは100%わからない(おそらく)参照を更新していないようです。

私たちは、あなたが空のrefに渡しているかを見ることができますあなたはので、私はあなたのコードを「コンパイル」しました:

var updates2 = {}; 

updates2['/offerLight/' + keyReal] = offer; 
updates2['/offer/' + keyReal] = offer; 

// Becomes... 

updates2 = { 
    '/offerLight/jifdjsiavdas': { 
    minusAccandShare: 2 
    }, 
    '/offer/jifdjsiavdas': { 
    minusAccandShare: 2 
    } 
} 

// So... 

return firebase.database().ref().update(updates2); 

// is sent as 

return firebase.database().ref().update({ 
    '/offerLight/jifdjsiavdas': { 
    minusAccandShare: 2 
    }, 
    '/offer/jifdjsiavdas': { 
    minusAccandShare: 2 
    } 
}) 

あなたが実際にがやってしたいことは、子ノードjifdjsiavdasを参照しているように思え。

firebase.database.ref('offer/' + keyReal).update(offer); 
:あなたはこのような参照して、それを指すようにしたいでしょう
関連する問題