Cloud Firestore在NodeJS中使用merge:true不起作用。

12 浏览
0 Comments

Cloud Firestore在NodeJS中使用merge:true不起作用。

在Firestore文档中表示,如果我们想要合并数据,需要使用merge:true,但它无效。

这是我的代码,非常类似于示例,它总是用新值替换旧存储的值

async function updateTotal() {
  const update = await db.collection("resources").doc(id).update({ "total": "500"}, { merge: true })
}

如果您有解决方案,请告诉我,我真的需要它

admin 更改状态以发布 2023年5月20日
0
0 Comments

如另一个答案所示:

  • set合并始终将数据覆盖为您传递的数据,而
  • update专门设计为使您有可能对文档执行部分更新,而不可能创建您的代码无法处理的不完整文档。请查看答案以及方案。

这是nick-w-nick在他的评论中解释的内容。

这另一个答案更好地解释了每个选项的使用情况:

  • setmerge 将覆盖文档或在不存在时创建它
  • setmerge 将更新文档中的字段或在不存在时创建它
  • update 将更新字段,但如果文档不存在则会失败
  • create 将创建文档,但如果文档已存在,则会失败

针对您在评论中解释的预期结果,您应该使用增量操作,如下所示:

您可以像以下示例中所示一样增加或减少数字字段值。增量操作将按给定数值增加或减少字段的当前值。

// Atomically increment the population of the city by 50.  
washingtonRef.update({ 
   population: firebase.firestore.FieldValue.increment(50)  
});

另请参阅:

0