У меня есть следующая функция, которая принимает аргумент (массив «имен»), а затем проверяет данные из моей базы данных Firebase для каждого пользователя по этому массиву.
Используется для компиляции массива «настроек» для каждого пользователя с его электронной почтой и именами, которые пользователь предоставил в список в качестве аргумента.Функция выглядит следующим образом.
fbDaemon = ({ folderNames }) => {
const settings = [];
ref.once("value")
.then((snapshot) => {
snapshot.forEach(user => {
auth.getUser(user.key)
.then(function(userRecord) {
let email = userRecord.toJSON().email;
let zips = [];
user.forEach(setting => {
let dep = setting.val().department;
if(folderNames.includes(dep)){
zips.push(dep);
}
});
settings.push({ email, zips });
})
.catch(function(error) {
console.log("Error fetching user data:", error);
});
});
});
});
По сути, она просматривает всю мою базу данных и составляет список настроек, которые я передам следующей функции.Конечный результат должен выглядеть примерно так:
[ { email: 'example@example1.com',
zips: [ 'Drug Enforcement Administration', 'Executive Branch' ] },
{ email: 'example@example2.com',
zips: [ 'FEMA', 'Congress' ] },
];
Проблема, с которой я столкнулся сейчас, заключается в том, что я не могу вернуть массив «settings» в нужное время.
Как я могу перенастроить эту функцию так, чтобы массив настроек возвращался только после полного запуска функции?
Другими словами, я хотел бы вернутьразрешено обещание с массивом настроек.Как я могу это сделать?