node.js - Firebase 循环失败并出现错误(函数返回未定义、预期的 Promise 或值)
问题描述
似乎我的第二个等待循环由于某种原因无法正常工作,因为我收到错误Function returned undefined, expected Promise or value
我不确定如何构造此代码以执行功能send_email_process(subscribers, campaigns[index])
(async () => {
try {
var campaigns = [];
var coll = db.collection("campaigns");
var query = coll.where("campaign_status", "==", "running").where("campaign_group", "==", "email");
await query.get().then(function (querySnapshot) {
querySnapshot.forEach(function (doc) {
campaigns.push(doc.data());
});
});
if (campaigns.length !== 0) {
console.log("Got here send_email");
for (let index = 0; index < campaigns.length; index++) {
const subscribers = [];
const campaign_lists = campaigns[index].campaign_list;
for (const campaign_list of campaign_lists) {
await db.collection("subscribers").where("subscriber_group", "==", "email").get().then(function (snapshot) {
snapshot.forEach(function (d) {
const subscriber_lists = d.data().subscriber_list;
for (const subscriber_list of subscriber_lists) {
if (campaign_list == subscriber_list) {
subscribers.push(d.data());
}
}
});
});
}
send_email_process(subscribers, campaigns[index]);
}
}
} catch (error) {
console.error("Failed send_email: " + error);
}
})();
任何帮助将不胜感激
解决方案
混合await
andthen
是可能的,但你需要小心从内部返回一个承诺,then
否则await
没有什么可等待的。您的then
处理程序都没有返回任何内容,因此await
可能毫无意义。
我在使用时如何做到这一点await
是跳过then
块并且:
var coll = db.collection("campaigns");
var query = coll.where("campaign_status", "==", "running").where("campaign_group", "==", "email");
const querySnapshot = await query.get();
const campaigns = querySnapshot.docs.forEach((doc) => doc.data());
then()
然后在第二个代码块中进行类似的删除。
推荐阅读
- typescript - 使用 cypress 命令验证下载文件(PDF/Word/Excel)的数据
- angular - 使用 ViewChild 的 Angular 6
- python - 如何切换到 iFrame,在 Selenium 中不起作用
- java - 在在线申请中使用 Java 执行器服务
- android - Android Studio Kotlin 多次传递意图和全局数组?
- c# - 为什么该方法在没有调用脚本标签的情况下运行?
- javascript - 从 ReactJS 中的状态对象中删除以前的事件
- node.js - 在 MERN 应用程序中,如果您的服务器上有 app.get('/') 和
在您的客户端上,哪个将首先触发或优先? - c - 通过 Shaker 排序对数组的主对角线进行排序
- ios - Delphi/ios:如何在我的 iOS 应用程序中包含动态库?