当前位置: 首页 > 知识库问答 >
问题:

云火库合并 true 在节点JS中不起作用

须旭
2023-03-14

在firestore文档中,它说如果我们想合并数据,就需要merge:true,但它不起作用

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

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

我真的需要它,如果你有一个解决方案

共有1个答案

云啸
2023-03-14

如另一个答案所示:

  • set merge将始终使用传递的数据覆盖数据,而
  • update是专门为使您能够执行文档的部分更新而设计的,而不可能创建代码无法处理的不完整文档。请检查此答案以及此场景

这是尼克在他的评论中解释的。

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

  • set没有合并将覆盖文档或在文档尚不存在时创建它
  • 设置合并将更新文档中的字段或在文档不存在时创建它
  • update将更新字段,但如果文档不存在则会失败
  • create将创建文档,但如果文档已经存在,则失败

对于您在注释中解释的预期结果,应使用递增运算,如下所示:

您可以增加或减少数字字段值,如下例所示。增量操作按给定的量增加或减少字段的当前值。

js prettyprint-override">// Atomically increment the population of the city by 50.  
washingtonRef.update({ 
   population: firebase.firestore.FieldValue.increment(50)  
});

另请参见:

  • 使用云火库原子地递增值
 类似资料:
  • Firebase的Cloud Firestore和Cloud Firestore有什么区别? 这里有一个帖子问同样的问题,但是有人,请启发我。 https://www.reddit.com/r/googlecloud/comments/bb9n46/what_is_the_difference_between_the_cloud/ 是一样的吗?如果没有,使用哪一个?

  • 长期潜伏者,第一次海报。 基本原则如下: 受这篇博客文章的启发,我试图为我们的QA团队创建一个书签来快速填充表单。 bookmarklet在Chrome、IE 10和IE 9兼容模式下的my machine(TM)上运行非常完美。我已经在QA团队的机器上测试了bookmarklet,虽然它在Chrome浏览器和IE9上运行良好,但bookmarklet在运行IE11的两台机器上不起作用。 详情:

  • 请问有人能帮帮我吗?提前谢谢你

  • 我有以下AOP切入点: 这在Weblogic中工作,但在JBoss中失败,但有一个例外:

  • 我正在用node制作一个web应用程序。js使用谷歌应用引擎。 我想重定向https://MY_PROJECT_ID.appspot.com到我的保管域。我跟着这个maual,但不工作。什么是问题? https://cloud.google.com/appengine/docs/flexible/nodejs/how-requests-are-routed#routing_with_a_dispa

  • 我得到了这样的错误{“code”:“er_parse_error”,“errno”:1064,“sqlmessage”:“您的SQL语法中有错误;请查看与您的MySQL服务器版本相对应的手册,以便在第1行'sp_li_uploaddata_get'附近使用正确的语法”,“sqlstate”:“42000”,“index”:0,“SQL”:“sp_li_uploaddata_get”}