Как связать обещания для использования с пакетной записью в FireStore - PullRequest
0 голосов
/ 26 декабря 2018

С моим текущим кодом batch.commit () запускается до того, как большинство документов было добавлено в пакет.Как я могу связать свои обещания так, чтобы я мог получить документы из вложенной коллекции, и ТОГДА добавить ее в пакет, и ТО после того, как все вложенные коллекции были обработаны, зафиксировать пакет.

exports.syncUserDetailsWithFriends = functions.firestore
    .document('users/{userId}')
    .onUpdate(change => {
      const newUserData = change.after.data();
      let usersRef = admin.firestore().collection('users')
      let batch = admin.firestore().batch();

      usersRef.get()
      .then(users => {
        users.forEach(userDoc => {
          let friendsRef = usersRef.doc(userDoc.id).collection('friends')
          friendsRef.get()
          .then(friends => {
            friends.forEach(friend => {
              if (friend.id == newUserData.id) {
                batch.update(friendsRef.doc(friend.id), newUserData)
              }
            })
          })
        })
      }).then(batch.commit().catch(error => console.error(error)))
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...