【发布时间】:2018-03-01 03:38:16
【问题描述】:
我使用 strongloop loopback v3 REST API 和 mongoDB 作为数据源。我的模特order.json是
{
"name": "order",
"base": "PersistedModel",
"strict": true,
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"orderNo": {
"type": "string"
},
"lines": {
"type": [
{
"type": {
"description": "string",
"quantity": "number"
}
}
]
}
},
"validations": [],
"relations": {},
"acls": [],
"methods": {}
}
我将"strict": true 设置为the model accepts only predefined properties。但这对数组lines 中的属性不起作用。
I.E.如果您将此对象发布到 API,您会得到预期的 ValidationError(代码 422):
{
"orderNo": "xyz",
"someOtherProp": "hello",
"lines": [
{
"description": "abc",
"quantity": 5
}
]
}
但是如果你发布这个 JSON 对象,loopback 会将对象保存到 mongoDB
{
"orderNo": "xyz",
"lines": [
{
"description": "abc",
"quantity": 5,
"someOtherProp": "hello"
}
]
}
我的问题是,是否在模型 JSON 中设置任何标志来验证对象数组?还是我必须自己通过order.js model extension file 验证嵌套文档?
【问题讨论】:
-
您可以使用AJV JSON Schema Validator 来验证模型属性。
标签: node.js mongodb loopbackjs strongloop