异步等待不解析/拒绝结果



这是我的异步等待示例代码

控制器

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');
});

相关内容

最新更新