Как объясняет @GazihanAlankus, поскольку запрос к базе данных Firestore является асинхронной операцией, вам необходимо вернуть Promise в вашей функции с помощью метода get()
следующим образом:
const getUsers = () => {
return //Note the return here
database
.collection('users')
.get()
.then(querySnapshot => {
const users = [];
querySnapshot.forEach(doc => {
users.push({
...doc.data(),
id: doc.id,
ref: doc.ref
});
});
return users;
});
};
Тогда вам нужно назвать его следующим образом:
getUsers().then(usersArray => {
console.log(usersArray);
usersArray.map(user => {
console.log('name: ', user.displayName);
});
});
поскольку функция возвращает Promise, см. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then.
Вы можете выполнить следующий тест и посмотреть, в каком порядке выполняются console.log()
s и что печатает второй console.log()
в консоли:
getUsers().then(usersArray => {
console.log(usersArray);
usersArray.map(user => {
console.log('name: ', user.name);
});
});
console.log(getUsers());