我有一个计数值为1的现有文档。当我使用FieldValue.increment(1)
使用setData
(应该用新的递增值覆盖)时,它不会递增值,而是使用updateData
,将值增加到2。
那是为什么?在这种情况下,setData
和updateData
有什么区别,尤其是当我使用相同数量的属性进行更新时?
答案 0 :(得分:1)
您使用setData
来设置新值,如果已经设置,则将使用新值覆盖而无需查看现有值。另一方面,updateData
会按需更新值。
答案 1 :(得分:0)
“设置”类型的操作默认情况下会覆盖现有数据,因此它可以按您期望的方式工作。它不考虑任何现有字段的值。
如果将“ merge”选项添加到setData,则只有指定的字段将被更新,其他所有内容将保持不变,例如update。参见documentation for setData。
ref.setData(data, true) // merge is true here