[英]Unhandled promise rejection using node.js
我在下面有這段代碼,它給了我一個錯誤,說我沒有處理 promise 拒絕。 我是 node.js 和快遞的新手,我不知道我做錯了什么。
const User = require('../model/user');
const linkValidation = async (req, res, next) => {
var refer = req.params.refer;
if (refer) {
await User.findById(refer)
.then(user, async function() {
if (user) {
user.saldo = user.saldo + 10
user.invites.push({
nome: nome,
valor_recebido: 10
});
await user.save().catch(err =>{
return res.status(500).json(err)
})
}else{
return res.status(404).json({message: "Usuário que criou esse link não existe"})
}
}).catch(err =>{
return res.status(500).json(err)
})
}else{
return res.status(404).json({message: "Usuário que criou esse link não existe"})
}
next()
}
module.exports = linkValidation
我使用的路由器是:
router.post('/cadastro/:refer', UserMiddleware, LinkMiddleware, UserController.create);
誰能幫我?
我的主要建議是在這里只使用 async/await。 我相信您將 async/await 與 .catch() 和 .then() 混合的方式是導致您的錯誤的原因。
使用 async/await 時,我認為最簡單的方法是使用如下所示的 try/catch 塊(而不是 .catch),並將任何拋出的錯誤傳遞給您的錯誤處理程序,並在 catch 塊中使用 next。
例如...
const User = require('../model/user');
const linkValidation = async (req, res, next) => {
try {
const refer = req.params.refer;
const user = await User.findById(refer)
if (user) {
user.saldo = user.saldo + 10
user.invites.push({
nome: nome,
valor_recebido: 10
});
await user.save()
}
res.send('success')
} catch(err) {
next(err)
}
}
module.exports = linkValidation
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.