Firestore批量深层复制还是浅层复制?

时间:2018-09-26 02:55:44

标签: javascript node.js firebase google-cloud-firestore deep-copy

假设我有以下代码:

let ref1 = db.collection('user').doc('u1')
let ref2 = db.collection('user').doc('u2')

let batch = this.db.batch()
let obj = {foo:'bar'}
batch.set(ref1, obj);
obj.foo = 'not bar anymore'
batch.set(ref2, obj);
batch.commit();

firestore会制作obj的深层副本还是浅层副本吗?换句话说,一旦查询运行并且我检查了我的数据库,文档'u1'的值将变为{foo:'bar'}还是{foo:'not bar anymore bar'}

1 个答案:

答案 0 :(得分:0)

DocumentReference对象是完全不变的(永不更改),只要仅使用面向外部的API。他们真正要做的只是指向Firestore中的文档位置。批量调用set()不会更改传递给它的引用。

当然,您可以尝试访问DocumentReference来直接对其进行修改,因为JavaScript允许此类操作,但这不是API的受支持使用。