发布到NodeJS后端时获取UnhandledPromiseRejectionWarning

时间:2018-02-24 16:17:41

标签: node.js

需要一些帮助。一直在学习NodeJS。到目前为止一切顺利。但是当我尝试创建一个与经过身份验证的用户关联的新ToDo对象时,我遇到了一个问题。

我收到以下错误

  

(node:54162)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。这个错误源于在没有catch块的情况下抛出异步函数,或者拒绝未使用.catch()处理的promise。 (拒绝ID:2)   (节点:54162)[DEP0018]弃用警告:不推荐使用未处理的拒绝承诺。将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程。

以下是有问题的代码:

app.post('/todos', authenticate, (req, res) => {
var todo = new Todo({
    text: req.body.text,
    _creator: req.user._id
});
todo.save().then(() => {
    res.send(todo);     
 }).catch((e) => {
     res.status(400).send(e);
 });
})

我不确定我错过了什么。我在某些地方读过关于尝试捕捉不匹配的信息。但我仍然不确定。

仅为了更多上下文,我还添加了我的authenticate.js

var {User} = require('./../models/user');

//Definining endpoint authentication middleware
var authenticate = (req, res, next) => {
    var token = req.header('x-auth');
    User.findByToken(token).then((user) => {
        if(!user) {
            return Promise.reject();
        }
        req.user = user;
        req.token = token;
        next();
        res.send(user);
    }).catch((e) => {
        res.status(401).send();
    }); 
};

module.exports = {authenticate};

0 个答案:

没有答案