Как я могу использовать .updateData () вместо .setData () в хранилище flutter, даже если документ не существует - PullRequest
1 голос
/ 04 мая 2020

Я пытаюсь сделать что-то вроде того, что, если документа не существует, выполните setData, а если документ существует, обновите данные ... Я пробовал это (код ниже), похоже, он работает но меня беспокоит, что если при запуске приложения сообщение об ошибке изменится.

Future updateReference(
    String phoneNumber,
  ) async {
    try {
      return await mCollectionRef.document(phoneNumber).updateData({
        uid: true,
      });
    } on PlatformException catch (error) {
      print(error.message.substring(0, 9));
      if (error.message.substring(0, 9) == 'NOT_FOUND') {
        return await mCollectionRef.document(phoneNumber).setData({
          uid: true,
        });
      }
    }
  }

Есть ли другой способ добиться этого?

1 Ответ

1 голос
/ 04 мая 2020

Если вы хотите обновить или создать документ, если он еще не существует, вы можете просто передать merge: true в качестве второго аргумента в setData () .

...