在Express中进行Mongoose验证失败后,如何向客户端返回错误消息

ske*_*rit 1 mongoose node.js express

我有一个非常基本的POST路由,可以从给定的数据中创建一个新用户.

这是我如何保存它:

app.post('/create', function(req, res){
    var firstUser = new models.User(req.body);
    firstUser.save();
});
Run Code Online (Sandbox Code Playgroud)

我的Mongoose User架构有一些验证选项,可以使用.如果我传递了错误的数据,则验证失败并且不会创建用户.

但是有一个问题:Mongoose的save()函数是异步的,那么如何让客户端现在验证失败呢?

post函数将在那时完成.

Fra*_*ank 6

你应该看看Mongoose文档.因为save方法是异步的,所以它将回调作为参数.这是您应该检查错误的地方.

app.post('/create', function(req, res){
    var firstUser = new models.User(req.body);
    firstUser.save(function (err) {
        if (err) {
            res.send(500, { error: 'Saving first user failed!' });
        } else {
            res.send({ success: 'Saved!' }); 
        }
    })
});
Run Code Online (Sandbox Code Playgroud)

  • 最好使用next来处理错误,因为这就是它的用途.它还将您的所有错误处理放在一个中间件处理程序中,而不是在整个项目中重复自己. (2认同)