Зачем устанавливать элемент коллекции возвращает ожидающее обещание - PullRequest
0 голосов
/ 24 сентября 2019

Выполнение этого:

db.collection("test").doc()
                    .set({
                        value: 100
                    }).then(resultOrWhateverItReturns => { /*never executed*/ });

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

Есть ли способ запустить команды вставки / обновления, возвращающие полезные, то есть выполненные / отклоненные обещания?Я использую v. 6.6.1 из sdk.

Обновление 1 - Документация Cloud Firestore предлагает следующий подход, который не работает для меня из-зафакт, что обещание, возвращенное set, находится в состоянии ожидания.Фактические данные обновляются в порядке.

db.collection("users").doc("frank").set({
  name: "Frank",
  favorites: {
    food: "Pizza",
    color: "Blue",
    subject: "Recess"
  },
  age: 12
}).then(function() {
  console.log("Frank created");
});

1 Ответ

0 голосов
/ 24 сентября 2019

Почему бы просто не использовать асинхронное ожидание?Например:

 await db.collection('users').doc('frank').set({
         name: "Frank",
         favorites: {
         food: "Pizza",
         color: "Blue",
         subject: "Recess"
       },
       age: 12
 });

У вас есть такая асинхронная функция:

const updateFn = async (userDetails) => {}

И вызывать обновление коллекции с помощью await?

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