【问题标题】:Validation in MEAN stack .....?MEAN堆栈中的验证......?
【发布时间】:2017-11-09 20:56:59
【问题描述】:

我正在开发一个 MEAN 堆栈应用程序,但我坚持验证(用户输入)。我知道客户端验证是在 Angular-JS 中完成的,但我很困惑在服务器端验证的位置。要么使用 mongooose 进行验证 要么 不对 mongooose 进行任何验证(仅存储)只在服务器中进行验证(使用某些模块的 Node/express) 验证两者服务器级和数据库级....????

我应该怎么做,请帮我选择最好的做法.....????

谢谢。

【问题讨论】:

  • 您绝对可以使用猫鼬进行用户输入验证,也应该使用用户端验证。

标签: node.js validation express mongoose


【解决方案1】:

作为 MEAN 堆栈开发人员,有多种方法可以验证表单... 1.) AngularJs 表单验证 2.) 猫鼬验证 3.) 后端验证(Express validator ot nodeValidator)

==> mongoose 中的验证

例如

var userSchema = new Schema({
  phone: {
    type: String,
    required: [true, 'User phone number required']
  },
  name: String,
  subDoc: [
    {
      newName:String,
      data:String
    }
  ]
});

以上代码展示了猫鼬验证器的简单集成。

mongoose 模式中的验证可能会在编写文档时产生问题 当有嵌套字段时会产生更糟糕的情况,我相信会有。在这种情况下,您有可能修改架构来管理验证,我遇到了很多麻烦..

因此,与节点验证器或 express 验证器一起使用是一个更好的想法,它们使用起来超级简单,并提供许多不同类型的验证选项..

试试 node-validator, Express validator

js.com/package/node-validator

我个人建议使用 Express 验证器。这很简单,可以提供您需要的大部分内容。

【讨论】:

    【解决方案2】:

    仅仅依靠猫鼬验证是不够的。必须确保您的路由不会让无效数据通过 mongoose 验证。

    此验证的最佳位置是中间件。

    router.get('/', validateParameters, controller.index);
    

    该函数采用reqresnext。如果 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 包,它为您提供了很多选项来验证请求体、查询和参数。一个不错的选择是为每条路由创建一个schema,然后将该模式传递给 validateParameters 函数,并使用req.check(schema)(检查所有)、req.checkQuery(schema)req.checkBody(schema)req.checkParams(schema) 之一对其进行验证,具体取决于位置你的参数是。

    【讨论】:

      【解决方案3】:

      您可能还想看看mongoose-validatorjs

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-13
        • 2016-01-28
        • 2015-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多