假设我有以下代码:
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'}
?
答案 0 :(得分:0)
DocumentReference对象是完全不变的(永不更改),只要仅使用面向外部的API。他们真正要做的只是指向Firestore中的文档位置。批量调用set()不会更改传递给它的引用。
当然,您可以尝试访问DocumentReference来直接对其进行修改,因为JavaScript允许此类操作,但这不是API的受支持使用。