我正在开发一个MEAN堆栈应用程序,但我坚持验证(用户输入)。我知道客户端验证是在Angular-JS中完成的,但我很困惑在服务器端验证的位置。使用mongooose进行验证或不要对mongooose(只是存储)进行任何验证仅在服务器中进行验证(使用某些模块进行节点/表达)或验证两者服务器级和数据库级.... ????
我该怎么办请帮助我选择哪种做法最好..... ????
感谢。
答案 0 :(得分:2)
作为MEAN堆栈开发人员,有多种方法可以验证表单... 1.)AngularJs形成验证 2.)猫鼬验证 3.)后端验证(Express验证器ot nodeValidator)
==>在mongoose验证
实施例
var userSchema = new Schema({
phone: {
type: String,
required: [true, 'User phone number required']
},
name: String,
subDoc: [
{
newName:String,
data:String
}
]
});
上面的代码显示了mongoose验证器的简单集成。
在编写文档时,mongoose模式中的验证可能会产生问题 当有嵌套字段时,可以生成更糟糕的情况,我相信会有。在这种情况下你有可能修改架构以管理验证,我遇到了很多麻烦..
所以它是一个更好的IDEA,可以使用节点验证器或表达验证器,它们使用起来非常简单,并提供了许多不同类型的验证选项。
TRY node-validator, Express validator
js.com/package/node-validator
我个人建议使用Express验证器。这很简单,提供了你需要的大部分东西。
答案 1 :(得分:0)
仅通过mongoose验证银行业务是不够的。必须保护您的路由,以免无效数据通过进行猫鼬验证。
此验证的最佳位置是中间件。
router.get('/', validateParameters, controller.index);
该功能需要req
,res
和next
。如果req参数有效,则调用next,否则使用400状态代码进行响应。这样,只有有效的呼叫到达终点。
function validateParameters(req, res, next){
// if req.params/req.body/req.query is valid
// return next();
// else return res.status(400).end;
}
至于实际如何验证,您可以检查express-validator包,它提供了许多选项来验证req正文,查询和参数。一个不错的选择是为每条路线创建一个schema,然后将该模式传递给validateParameters函数并使用req.check(schema)
(以检查全部),req.checkQuery(schema)
,req.checkBody(schema)
之一进行验证或req.checkParams(schema)
,具体取决于参数的位置。
答案 2 :(得分:0)
您可能还想查看mongoose-validatorjs。