我需要更新文档(如果存在),否则创建

时间:2020-01-25 02:29:22

标签: firebase flutter dart google-cloud-firestore

是否存在对文档进行更新的任何方法(如果存在的话)来创建文档。现在,我正在使用update方法,但是如果该文档不存在,它将抛出一条错误消息。

Firestore.instance.collection('partnerRequests').document(user.uid).updateData( {
                  DateTime.now().millisecondsSinceEpoch.toString():partnerRegistrationFormData})

未处理的异常:类型'PlatformException'不是类型的子类型 '字符串'

2 个答案:

答案 0 :(得分:1)

如果您正在调用updateData()函数,则只有在partnerRequests集合中已经已经存在文档时,才更新文档。如果该特定文档不存在,则updateData()调用将失败,但您向我们展示的例外。

另一方面,如果您要调用setData()函数:

docRef.setData(data, merge: true)

如果文档不存在,则将其创建;如果文档已存在,则将对其进行更新。这基本上就是这两个功能之间的区别。

并回答您的问题:

如果存在,我需要更新文档,否则创建

您绝对应该使用setData()

答案 1 :(得分:0)

我相信答案是在此线程中:Firebase update vs set

具体来说,您将要使用方法.set({dataToSet},{merge:boolean}),该方法将创建不存在的文档,然后通过merge选择如果已经存在将发生什么情况(true =更新现有字段并添加新字段,false =覆盖该位置的所有现有数据)。