这是我的异步等待示例代码
控制器
const {addUserInterestService} = require('../services/profile.js');
const addUserInterest = async function (req,res,next){
try{
let params ={
id:req.user.userId,
userInterests:['5bb2597ca8729e19ddaf13a8']
};
let result = await addUserInterestService(params);
console.log(result);
}catch(error){
console.log(error);
}
}
/服务/配置文件.js
const User = require('../models/User');
const addUserInterestService = async (params)=>{
console.log(params);
return new Promise((resolve,reject)=>{
User.update({
_id:params.id,
},{
'$addToSet':{userInterest:{'$each':params.userInterests}}
})
},(err,result)=>{
console.log("async",err,result);
if(err){
reject(err,null);
}
resolve(null,result);
})
}
module.exports ={
addUserInterestService
}
但是这里没有解决的承诺,即console.log(result);
永远不会返回任何结果。
服务中的函数错误。您的新承诺的结构...已关闭。由于您使用的是 async/await,因此您可以执行此操作。
const addUserInterestService = async (params)=>{
const result = await User.update({
_id:params.id,
},{
'$addToSet':{userInterest:{'$each':params.userInterests}}
});
return result;
}
我猜User.update返回一个承诺,所以你可以这样做。
const addUserInterestService = (params)=> {
return User.update({
_id:params.id,
},{
'$addToSet':{userInterest:{'$each':params.userInterests}}
});
}
如果您要使用新的承诺...等等你可以做的。
const yourFunction = () => new Promise((resolve, reject) => {
// do whatever
return resolve('data');
});