Javascript 在多个Mongoose查询后返回Results对象
在Express中,我有一个项目数组,每个项目都包含一个存储为Mongo ObjectId的工作会话数组 我希望迭代项目数组,对于每个项目,从MongoDB获取其工作会话,然后将工作会话列表添加到一个对象,该对象最终将包含项目数组中所有项目的所有工作会话Javascript 在多个Mongoose查询后返回Results对象,javascript,express,promise,Javascript,Express,Promise,在Express中,我有一个项目数组,每个项目都包含一个存储为Mongo ObjectId的工作会话数组 我希望迭代项目数组,对于每个项目,从MongoDB获取其工作会话,然后将工作会话列表添加到一个对象,该对象最终将包含项目数组中所有项目的所有工作会话 projectService.GetWorkSessions(result.user._id) .then((projects) => { console.log(projects) // nothing gets logge
projectService.GetWorkSessions(result.user._id)
.then((projects) => {
console.log(projects) // nothing gets logged.
}
GetWorkSessions: (userId) => {
return getProjects(userId) // this is ok.
.then((projects) => {
let workSessions = {};
let counter = 0;
return promise = new Promise((resolve, reject) => {
return projects.forEach((project) => {
return getWorkSessions(project)
.then((sessionsList) => {
counter ++
workSessions[project._id] = sessionsList;
if(counter == projects.length) {
console.log('done')
promise.resolve();
}
})
})
})
})
},
workSession对象已填充,但forEach完成后,如何将其返回到调用函数 如果要将值数组映射到异步检索的值数组,请使用Promise.allvalues.map…: GetWorksSessions的返回值应解析为一个对象数组,每个对象都具有.project和.sessions属性。promise=newpromise。。。承诺.决心-不。。。这不是承诺的工作方式
const projectWithSessions = (project) =>
getWorkSessions(project).then((sessions) =>
({ project, sessions })
);
GetWorkSessions: (userId) =>
getProjects(userId).then((projects) =>
Promise.all(projects.map(projectWithSessions))
);