SETUP
/demo/key
的值类似于{a:1, b:2, c:3}
在/user/demo/key
,有true
var database = firebase.database();
var rootRef = database.ref();
情景A
rootRef.child('demo/key').update({a:0});
// Result -> {a:0, b:2, c:3}
// b and c not overwritten, still exist -> happy
// update() acts like I expected / read
情景B
var data = {a:7};
var updates = {};
updates[`/demo/${key}`] = data;
updates[`/user/demo/${key}`] = true;
rootRef.update(updates);
// Result -> {a:7}
// b:2, c:3 are gone -> Acts like set() ???
// Expected -> {a:7, b:2, c:3}
我不确定为什么会这样......但我希望update()
函数在任一实例中都以相同的方式运行并进行部分写入。
我做错了什么或错过了一个关键概念?
答案 0 :(得分:2)
它确实像update
一样工作。当您将数据传递到update
时,每个密钥都为set
,并且密钥为&#39}。未包含在数据中的兄弟姐妹不会受到影响。
要确保不删除b
和c
,您需要做的就是使用更具体的密钥。例如:
var updates = {};
updates[`/demo/${key}/a`] = 7;
updates[`/user/demo/${key}`] = true;