Массив не обновляется во вложенном FireStore Get - PullRequest
0 голосов
/ 12 апреля 2020

Меня не смущает, почему массив не обновляется, когда я разрешаю обещание, содержащее вложенный get Firestore.

Код ниже:

let userArray = [];
  return new Promise(resolve => {
    channelPaticipationRef
      .where('channel', '==', channel.id)
      .get()
      .then(participationSnapshot => {
        participationSnapshot.forEach(participationDoc => {
          const participation = participationDoc.data();
          participation.id = participationDoc.id;
          if (participation.user != userId) {
            usersRef
              .doc(participation.user)
              .get()
              .then(user => {
                if (user.data()) {
                  const userData = user.data();
                  userArray = [
                    ...userArray,
                    {
                      userId: userData.id,
                      userFirstName: userData.firstName,
                      userLastName: userData.lastName,
                      userIsOnline: userData.isOnline,
                      userProfilePictureURL: userData.profilePictureURL,
                      userLastTimestamp: userData.lastOnlineTimestamp,
                    },
                  ];
                  console.log(1, userArray)
                }
              })
              .catch(error => console.log(error));
          }
          console.log(2, userArray)
        });
        console.log(3, userArray)
        resolve(userArray);
      });
  });

В консоли он возвращает

2 []
2 []
3 []
1 [{…}]
1 (2) [{…}, {…}]

и обещание возвращает пустой массив

Если я добавляю или обновляю массив с помощью оператора распространения, почему он не регистрируется?

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