Firestore方法docRef.set(someData, {merge:true})和docRef.update(someData)之间的区别是什么?

9 浏览
0 Comments

Firestore方法docRef.set(someData, {merge:true})和docRef.update(someData)之间的区别是什么?

这个问题已经有了答案

Firestore 设置 {merge: true} 和 Update 的区别

假设我在我的Firestore中存储了以下文档。

collection: "myColection"
  document: "myDocument"
    fields:
      someBoolean: true
      someArray: ['a','b','c']
      etc

Firebase DOCS - Source

问题

以下两种方法在切换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日
0
0 Comments

你可以在这里找到答案。

简而言之,使用带有merge选项的set方法如果字段或文档不存在,则会创建它们,而update方法则会在文档不存在时失败。

此外,更新嵌套值时,update函数的行为与set函数不同。它将替换嵌套对象,而set方法将新值与当前值合并。

0
0 Comments

如果您已经将myDocument文档存储在myCollection集合中,那么不会有任何区别。

如果不存在现有的myDocument文档,则会出现差异:set()将起作用,但update()则不会。

请参阅文档https://firebase.google.com/docs/reference/js/firebase.firestore.DocumentReference#update,其中说“如果应用于不存在的文档,则更新将失败。”

0