【发布时间】:2019-03-29 10:00:15
【问题描述】:
我有以下函数,它接受一个参数(“名称”数组),然后根据该数组检查每个用户的 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' ] },
];
我现在遇到的问题是我无法在适当的时间返回“设置”数组。
如何重新配置此函数,以便仅在整个函数运行后返回设置数组?
换句话说,我想用设置数组返回一个已解决的承诺。我该怎么做?
【问题讨论】:
标签: javascript firebase firebase-realtime-database promise