Javascript JS:异步函数
我是JS新手,在异步函数方面遇到了一些问题。 我有一个函数,从MongoDB返回数据。我创建了一个承诺,并使用空对象获取集合Javascript JS:异步函数,javascript,node.js,asynchronous,promise,async-await,Javascript,Node.js,Asynchronous,Promise,Async Await,我是JS新手,在异步函数方面遇到了一些问题。 我有一个函数,从MongoDB返回数据。我创建了一个承诺,并使用空对象获取集合 async function getRating(item, applicant) { let arr = await Applicant.find({ proff: item }).sort({ ball: "desc" }); let rating = arr.findIndex(item => item._id.equals(applicant._id));
async function getRating(item, applicant) {
let arr = await Applicant.find({ proff: item }).sort({ ball: "desc" });
let rating = arr.findIndex(item => item._id.equals(applicant._id));
let spec = await Spec.findById(item);
const el = { spec, rating };
return el;}
router.get("/test", auth, async (req, res) => {
let applicant = await Applicant.findOne({ user: req.user.id });
let ratings = [];
applicant.proff.forEach(item => {
const rating = getRating(item, applicant)
.then(rating => ratings.push(rating))
.catch(err => console.log(err));
ratings.push(rating);
});
await res.json(ratings);
});
当我签入Postman时,这个returnme数组:[{},{},{}]
请帮助。此部分仍然是异步的,您必须使用wait
const rating = getRating(item, applicant).then(rating => ratings.push(rating)).catch(err....
异步函数返回promise,因此您需要在getRating之前使用wait。您可以尝试
promise。所有
异步函数getRating(项目,申请人){
让arr=wait applicator.find({proff:item}).sort({ball:'desc'});
让评级=arr.findIndex(项目=>项目id等于(申请人id));
let spec=等待spec.findById(项目);
const el={spec,rating};
返回el;
}
路由器.get('/test',auth,async(req,res)=>{
let applicator=wait applicator.findOne({user:req.user.id});
const ratingsPromise=applicator.proff.map(异步项=>{
施工评分=等待获得评分(项目、申请人);
回报率;
});
常数评级=等待承诺。全部(评级承诺);
返回res.json(评级);
});
欢迎来到SO!,你们能告诉我你们从申请人身上得到了什么吗?我不确定,但我找不到你们的回复。在申请人身上我得到了一些信息。其中有关用户的信息。无效。现在得到一个空数组。对于这样简短的答案,请使用注释。