猫鼬-解决依赖于其他模型的复杂验证

时间:2018-12-31 00:19:53

标签: node.js validation mongoose

使用joi之类的隔离数据验证非常简单。但是解决依赖于其他模型的验证的一种好方法是什么,例如以下集合:

项目:

[
  {_id: ".....", title: "Product 1", in_stock: 3},
  {_id: ".....", title: "Product 2", in_stock: 10},
....
]

还有一个“订单”请求,例如:

{
items:[
{_id: "....", quantity: 3},
{_id: "....", quantity: 6},
...
]
}

现在,我要检查订单请求中的所有项目是否都有库存(数量<=相应项目的in_stock)。解决这个问题的好方法是什么?

1 个答案:

答案 0 :(得分:0)

我自己也遇到了同样的问题 最简单的解决方案是使用内置的验证机制的猫鼬,这样您就不必 需要继续在您的应用程序中创建很多模式 它会使其健壮性降低,并且随着您的成长,代码实际上会变得很难维护

当您使用服务器数据库连接引擎(如mongojs)时,建议使用Joi 因为它没有适当的验证机制

另一方面,

mongoose是一个非常快速且强大的mongoDb包装器,它带有所有可能的CRUD,索引聚合和Schema创建。(您可以简单地使用mongoose validates集成您的验证并使Schema居中并编写代码多余的

使用猫鼬验证器属性并使用正则表达式创建函数以检查白名单 如果用户输入不符合您的要求,则抛出错误