Firestore方法docRef.set(someData, {merge:true})和docRef.update(someData)之间的区别是什么?
Firestore方法docRef.set(someData, {merge:true})和docRef.update(someData)之间的区别是什么?
这个问题已经有了答案:
假设我在我的Firestore中存储了以下文档。
collection: "myColection" document: "myDocument" fields: someBoolean: true someArray: ['a','b','c'] etc
问题
以下两种方法在切换someBoolean
字段时有什么区别:
OPTION 1
const docRef = db.collection('myCollection').doc('myDocument'); await docRef.set({ someBoolean: false }, {merge: true});
OPTION 2
const docRef = db.collection('myCollection').doc('myDocument'); await docRef.update({ someBoolean: false });
admin 更改状态以发布 2023年5月21日
你可以在这里找到答案。
简而言之,使用带有merge选项的set方法如果字段或文档不存在,则会创建它们,而update方法则会在文档不存在时失败。
此外,更新嵌套值时,update函数的行为与set函数不同。它将替换嵌套对象,而set方法将新值与当前值合并。
如果您已经将myDocument
文档存储在myCollection
集合中,那么不会有任何区别。
如果不存在现有的myDocument
文档,则会出现差异:set()
将起作用,但update()
则不会。
请参阅文档https://firebase.google.com/docs/reference/js/firebase.firestore.DocumentReference#update,其中说“如果应用于不存在的文档,则更新将失败。”