У меня есть этот код, в который я добавляю пользователей в Firebase DB, и resolve
Promise
, когда пользовательский импорт завершен.В разрешении я включаю массивы, которые содержат добавленных пользователей.Эти массивы заполняются при добавлении одного пользователя.Код ниже:
return new Promise((resolve, reject) => {
let usersAdded = [];
users.map((user, index) => {
db.ref('/users').push(user, err => {
if(!err) {
usersAdded.push(user)
console.log(`Array at iteration ${index}: ${usersAdded}`)
}
if(index == users.length-1){
resolve({status: true, usersAdded})
}
})
})
})
Вывод на консоль:
Array at iteration 0: [{name: nadir, email: iamnadir10@yahoo.com, creditCard: true}]
Array at iteration 1: [{name: nadir, email: iamnadir10@yahoo.com, creditCard: true}, {name: arslan, email: arslan346@yahoo.com, creditCard: true}]
Array at iteration 2: [{name: nadir, email: iamnadir10@yahoo.com, creditCard: true}, {name: arslan, email: arslan346@yahoo.com, creditCard: true}, {name: farhan, email: farhan1992@gmail.com, creditCard: true}]
Хотя, когда я вижу ответ на .then(user)
, он возвращает пустой массив (usersAdded
).Пользователи также добавляются в Firebase.Может кто-нибудь сказать мне, в чем здесь проблема?
Редактировать:
Я смог ее решить, проблема была в том, что Обещание было решено до того, как db.ref.push запустил обратный вызов,в этом обратном вызове я заполнял массив, поскольку это была асинхронная операция.