Он еще не содержит данных из хранилища . .
. get()
работает асинхронно, возвращая обещание и затем продолжая выполнение программы.Следующая строка - console.log(arr)
, но arr
еще не заполнена - она заполняется после завершения Promise (вызывает часть then()
).
Если вы используете достаточно современную версиюузла (узел 8 и выше, который вы должны использовать в данный момент), тогда вы можете использовать await
, чтобы дождаться завершения асинхронной операции, прежде чем переходить к следующей строке.
У меня нетпротестировал его, но ваш код может выглядеть примерно так после переписывания:
doc = await Ref.get();
if (!doc.exists) {
console.log('No such document!');
} else {
let data = doc.data().Name;
arr.push(data);
}
console.log(arr)
Это сработает, потому что await
ожидает завершения асинхронного get()
и возврата документа.Все остальное обрабатывается синхронно.