你如何处理 Express 和 Node 中的服务器端验证?

How do you handle server side validation in Express and Node?

我有一个 Web 应用程序,它在 POST 请求中向我的 Express 服务器发送 MongoDB 个 ObjectID。然后,我使用这些 ObjectID 使用 Mongoose 从我的数据库中 select 文档。

我目前正在处理错误,方法是从 Mongoose 的回调中获取错误,从路由处理函数返回,然后调用一个通用错误函数来响应状态和错误。

if (app.get('env') === 'development') {
    app.use(function(err, req, res, next) {
        console.log(err);
        res.status(err.status || 500);
        res.send({
            message: err.message,
            error: err
        });
    });
}

我很好奇在将 ObjectID 提供给 Mongoose 之前使用 Validate.js 之类的东西检查 ObjectID 是否有效,或者只是让 Mongoose 看到它无效并允许它回调是否是一种好习惯然后我用我的通用错误处理程序处理一个错误?

我很想听听任何一种解释。

来自http://mongoosejs.com/docs/validation.html

Mongoose has several built in validators.

All SchemaTypes have the built in required validator.
Numbers have min and max validators.
Strings have enum and match validators.

例如,

var mySchema = new mongoose.Schema({
     myField:  {type String, match:'/\.html$/'}
     myNumField: {type Num,  max:5}
});

我想你应该使用他们的方法,因为这是它的目的。