我一直得到“UnhandledPromiseRejectionWarning:UnhandledPromiseRejection.此错误源于在没有catch块的异步函数内部抛出,或拒绝未用.catch()处理的Promission.(拒绝ID:2)”
我已经处理了所有的承诺,但错误仍然存在
const router =require('express').Router();
const User = require('../modules/user');
const auth = require('../authenticate/auth');
router.post('/create', auth, async(req,res, next)=>{
let uid = req.user.uid;
try{
await User.findById(uid)
.then(user=>{
user.Business.forEach(business => {
if(business._id == req.body.buId ){
console.log(business._id)
business.items.push(req.body);
user.save()
.then(user=>{
res.json(user);
},(err) => next(err))
.catch(err=>{
res.json({err})
})
}
else{
res.statusCode = 400;
res.setHeader('content-type', 'application/json');
res.json({err, message:'no such business exist'})
}
});
},(err) => next(err))
.catch (err=>{
res.json({err, message:'user do not exist'})
})
}
catch (err){
res.send(err)
}
})
module.exports= router;
显然promise在循环函数中不能很好地工作。将其存储在可变变量函数中。
const router =require('express').Router();
const User = require('../modules/user');
const auth = require('../authenticate/auth');
router.post('/create', auth, (req,res, next)=>{
let uid = req.user.uid;
try{
User.findById(uid)
.then(user=>{
let business = ()=>{
for (let index = 0; index < user.Business.length; index++) {
if(user.Business[index]._id == req.body.buId ){
return user.Business[index];
}
}
}
business().items.push(req.body);
user.save()
.then(user=>{
res.json(user);
},(err) => next(err))
.catch(err=>{
res.json({err})
})
},(err) => next(err))
.catch (err=>{
res.json({err, message:'user do not exist'})
})
}
catch (err){
res.send(err)
}
})
module.exports= router;
首先,由于您正在user.findbyid和user.save中使用Promise,因此不需要“async”和“await”关键字。您正在使用.catch块处理该错误。
其次,您正在使用一个for Each循环,该循环内部有promise,它将无法工作。使用normal for loop或任何其他。
当下面的代码错误(拒绝其promise)时,我会收到警告。HTTP函数似乎错误很好。我想,本身一定发生了什么事情,这在某种程度上避免了try-catch。 有人能开导我吗?(这是在几次尝试改变事情以使其工作之后。) NodeJS 11.13.0
当我运行部署我的应用程序的命令时,我发现以下错误 (节点: 6292)UnhandledPromiseRejtionWarning: UnHandledPromiseRejtionWarning: UnHandledPromiseRejtionWarning: UnHandledPromiseRejtionWarning: UnHandledPromiseRejtionWarning: UnHan
当我的角度前端发送请求时 我的nodejs服务器接收它 我添加了setTimeout,因为如果没有它,我就会得到错误:状态代码400请求失败。 因此,我可以发布订单到,但得到promise拒绝。 (节点:9220)UnhandledPromiseRejtionWarning:未处理的promise拒绝。这个错误要么是由于抛出一个没有捕获块的异步函数,要么是由于拒绝了一个没有用. cat()处理的p
问题内容: 将NodeJS与MongoDB + Mongoose结合使用。 首先,我知道异步非阻塞代码的优点。所以我确实处理回调。但是最后我遇到了以下问题。 可以说我有一个可以随时被用户调用的函数。超级“闪电般的”用户可能几乎同时调用两次。 当然它是这样执行的:查找查询,查找查询,保存查询,保存查询 这完全破坏了应用程序的逻辑(应查找查询,保存查询,查找查询,保存查询)。因此,我决定通过“锁定”特
我主要是为技术精明的人编写一个小工具,例如程序员、工程师等,因为这些工具通常是快速的,随着时间的推移,我知道会有未处理的异常,用户不会介意。我希望用户能够向我发送回溯,这样我就可以检查发生了什么,并可能改进应用程序。 我通常做wxPython编程,但我最近做了一些Java。我已经将