Мне нужно обновить документ, если существует, иначе создать - PullRequest
0 голосов
/ 25 января 2020

Есть ли способ обновить документ, если он существует, иначе создайте документ. Сейчас я использую метод update, но если документ не существует, он выдаст сообщение об ошибке.

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

Необработанное исключение: тип 'PlatformException' не является подтипом типа ' Строка '

Ответы [ 2 ]

0 голосов
/ 25 января 2020

Если вы вызываете функцию updateData(), вы обновите документ, только если он уже существует в вашей коллекции partnerRequests. Если этот конкретный документ не существует, вызов updateData() не будет выполнен, за исключением того, что вы нам показали.

С другой стороны, если вы вызываете функцию setData():

docRef.setData(data, merge: true)

Вы создадите документ, если он не существует, или обновите его, если он уже существует. В этом и заключается разница между этими двумя функциями.

И чтобы ответить на ваш вопрос:

Мне нужно обновить документ, если он существует, иначе создайте

You определенно следует использовать setData().

0 голосов
/ 25 января 2020

Я полагаю, что ответ в этой теме: Обновление Firebase против набора

В частности, вы захотите использовать метод .set({dataToSet},{merge:boolean}), который создаст документ, если он не не существует, а затем через merge вы выбираете, что произойдет, если это уже произошло (true = обновить существующие поля и добавить новые, false = перезаписать все существующие данные в этом месте).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...