这是我的异步等待代码示例
控制器
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);
}
}
/services/profile.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);
永远不会返回任何结果。
答案 0 :(得分:0)
您服务中的功能有误。您的新Promise ...的结构已关闭。由于您使用的是异步/等待,因此可以执行此操作。
const addUserInterestService = async (params)=>{
const result = await User.update({
_id:params.id,
},{
'$addToSet':{userInterest:{'$each':params.userInterests}}
});
return result;
}
我猜User.update返回了一个Promise,所以您可以做到。
const addUserInterestService = (params)=> {
return User.update({
_id:params.id,
},{
'$addToSet':{userInterest:{'$each':params.userInterests}}
});
}
如果您要使用新的Promise ...等,则可以这样做。
const yourFunction = () => new Promise((resolve, reject) => {
// do whatever
return resolve('data');
});