【问题标题】:Unhandled promise rejection using node.js使用 node.js 处理未处理的承诺拒绝
【发布时间】:2020-06-09 22:09:02
【问题描述】:

我在下面有这段代码,它给了我一个错误,说我有未处理的承诺拒绝。我是 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);

谁能帮帮我?

【问题讨论】:

  • await 语法不应该像我猜的那样。如果then 函数实际使用此代码?

标签: javascript node.js express middleware


【解决方案1】:

我的主要建议是在这里只使用 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

【讨论】:

    猜你喜欢
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多