在 sails.js 中使用 Actions2 时,我如何验证正文对象?
When using Actions2 in sails.js how do i validate the body object?
对sails.js
很陌生
我知道输入对象允许 actions2 验证请求参数。但是你如何 access/validate 请求正文。例如req.body。我知道我可以从这个访问它。req.body,但是对于 actions2,我想知道是否有一种方法可以通过输入或其他内置的东西来 accessing/validating 它,就像查询参数一样。
下面的动作很简单,说明了这一点。
module.exports = {
friendlyName: 'Create',
description: 'Create summaries.',
inputs: {},
exits: {},
fn: async function (inputs, exits) {
// All done.
return this.res.created(this.req.body)
},
}
正文将包含:
{
"Summary": [
{
"DUPLICATE_MANIFESTED": 0,
"DUPLICATE_SEEN": 4,
},
{
"DUPLICATE_MANIFESTED": 0,
"DUPLICATE_SEEN": 1,
}
]
}
谢谢!
好的。所以我作为认真的新手意识到它确实有效。但我还发现,输入中的标准验证对于嵌套对象和数组的工作方式不同。
所以基本上您使用的是您发送的对象中的密钥,因此可以立即使用 'Summary'。
我提到的关于验证的部分。我可能是错的,但正如你所看到的,我发现 sails under the hood 使用 rttc 进行类型检查,所以第一个元素下面的每个元素都不能有任何属性,如 'description' 或 'type',而是必须直接将类型作为值。不过,我已经调查了任何进一步的嵌套。
我还发现在类型检查嵌套属性时没有一种简单的方法来缺少元素,所以基本上它们都是必需的,或者你可以将它们设置为我认为的'*',这基本上绕过了类型检查。我确实需要在这方面做更多的功课,因为我不是 100% 确定,但我认为它可能会对遇到这个问题的任何人有所帮助。
下面是我的答案。
module.exports = {
friendlyName: 'Create',
description: 'Create summaries.',
inputs: {
Summary: {
description: 'The current incoming request (req).',
type: [
{
DUPLICATE_MANIFESTED: 'number',
DUPLICATE_SEEN: 'number',
}
]
}
},
exits: {},
fn: async function (inputs, exits) {
// All done.
return this.res.created(inputs.Summary)
},
}
希望这对像我这样的新手有所帮助!
对sails.js
很陌生我知道输入对象允许 actions2 验证请求参数。但是你如何 access/validate 请求正文。例如req.body。我知道我可以从这个访问它。req.body,但是对于 actions2,我想知道是否有一种方法可以通过输入或其他内置的东西来 accessing/validating 它,就像查询参数一样。
下面的动作很简单,说明了这一点。
module.exports = {
friendlyName: 'Create',
description: 'Create summaries.',
inputs: {},
exits: {},
fn: async function (inputs, exits) {
// All done.
return this.res.created(this.req.body)
},
}
正文将包含:
{
"Summary": [
{
"DUPLICATE_MANIFESTED": 0,
"DUPLICATE_SEEN": 4,
},
{
"DUPLICATE_MANIFESTED": 0,
"DUPLICATE_SEEN": 1,
}
]
}
谢谢!
好的。所以我作为认真的新手意识到它确实有效。但我还发现,输入中的标准验证对于嵌套对象和数组的工作方式不同。
所以基本上您使用的是您发送的对象中的密钥,因此可以立即使用 'Summary'。
我提到的关于验证的部分。我可能是错的,但正如你所看到的,我发现 sails under the hood 使用 rttc 进行类型检查,所以第一个元素下面的每个元素都不能有任何属性,如 'description' 或 'type',而是必须直接将类型作为值。不过,我已经调查了任何进一步的嵌套。
我还发现在类型检查嵌套属性时没有一种简单的方法来缺少元素,所以基本上它们都是必需的,或者你可以将它们设置为我认为的'*',这基本上绕过了类型检查。我确实需要在这方面做更多的功课,因为我不是 100% 确定,但我认为它可能会对遇到这个问题的任何人有所帮助。
下面是我的答案。
module.exports = {
friendlyName: 'Create',
description: 'Create summaries.',
inputs: {
Summary: {
description: 'The current incoming request (req).',
type: [
{
DUPLICATE_MANIFESTED: 'number',
DUPLICATE_SEEN: 'number',
}
]
}
},
exits: {},
fn: async function (inputs, exits) {
// All done.
return this.res.created(inputs.Summary)
},
}
希望这对像我这样的新手有所帮助!