使用setData的Firestore fieldvalue.increment不会增加值,而updateData会

时间:2019-12-02 19:18:46

标签: firebase flutter google-cloud-firestore

我有一个计数值为1的现有文档。当我使用FieldValue.increment(1)使用setData(应该用新的递增值覆盖)时,它不会递增值,而是使用updateData,将值增加到2。

那是为什么?在这种情况下,setDataupdateData有什么区别,尤其是当我使用相同数量的属性进行更新时?

2 个答案:

答案 0 :(得分:1)

您使用setData来设置新值,如果已经设置,则将使用新值覆盖而无需查看现有值。另一方面,updateData会按需更新值。

答案 1 :(得分:0)

“设置”类型的操作默认情况下会覆盖现有数据,因此它可以按您期望的方式工作。它不考虑任何现有字段的值。

如果将“ merge”选项添加到setData,则只有指定的字段将被更新,其他所有内容将保持不变,例如update。参见documentation for setData

ref.setData(data, true)  // merge is true here