- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想检查 HTTP 请求 header 的一个参数(在本例中为 docsLimit)。所以我这样做了:
const {
celebrate,
Joi,
} = require('celebrate');
const joiObjectId = require('joi-objectid');
Joi.objectId = joiObjectId(Joi);
const limit = celebrate({
headers: Joi.object().keys({
docsLimit: Joi.number()
.required()
.default(10),
}).options({ allowUnknown: true })
});
module.exports = limit;
在 app.js 中:
app.get(path, limit, getDocuments);
我不得不说我是 nodejs 的新手,尤其是 Joi,但这对我来说似乎很有意义。这是错误的,因为如果我在 header 中发送一个字符串,它无论如何都会接受它,即使我将它精确为一个数字。如果我删除 .options({ allowUnknown: true }) 那么它永远不会通过,即使有一个数字。它说“UnhandledPromiseRejectionWarning:错误 [ERR_HTTP_HEADERS_SENT]:将 header 发送到客户端后无法设置 header ”并返回一个 json,表示“不允许限制”。使用 Joi 检查 header 中的参数的方法是什么?
非常感谢!
最佳答案
问题是 header 始终是一个字符串,所以我不应该执行 Joi.number()。我应该使用 Joi.string() 然后,我检查一个正则表达式以便成为一个数字。最后我在使用前将其转换为数字!
关于javascript - 使用 Joi、nodejs 验证 header 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65106628/
我有一个 api,在过去的开发中,它会接收逗号分隔的字符串作为有效输入,并使用以下内容作为验证器: Joi.string() 但现在我想使用这里提到的字符串数组来实现相同的变量 https://git
这是我的 Joi 模式 const createRoom = { body: { createdBy: Joi.string().required(), members: Joi.
我刚刚遇到了我必须处理的这行代码: Joi.array().label('Emails').items(Joi.string()).required() 我特别不明白 .label('Emails')
我有两个文件,一个是 api.js,另一个是 handler.js。对于模式处理,我正在使用庆祝模块 @hapi/joi On api.js I wrote only the API name On
let obj = Joi.object().keys({ "id": Joi.string().required(), "array": Joi.array().items
我想使用 Joi 验证对象,该对象不使用 Joi.ref() 和乘法运算。 var object = { a: 5, b: 6 } // this is wrong as Joi.re
我正在构建一个 JOI 扩展,如果他们在 JWT 范围内缺少某些角色,我可以将某些人列入黑名单,禁止他们发送某些 API 值。 到目前为止我已经这样做了: const Joi = require('j
我有一个场景,我需要根据所在国家/地区使用不同的正则表达式验证增值税号。因此,当字段 language 为 SE 时,我想使用此正则表达式 /^\d{6}-\d{4}$/字段 company.vatN
根据 Joi 文档,您可以像这样使用 Joi.object(): const object = Joi.object({ a: Joi.number().min(1).max(10).inte
joi.string().valid(['foo', 'bar']) 已弃用。 Error: Method no longer accepts array arguments: allow 实现这一目
我如何使用 Joi 来验证替换字段具有零个或多个键/值对?并且每个键都是一个字符串,每个值都是一个字符串、数字或 bool ? "substitutions": { "somekey": "s
我有一个复杂的验证,它根据 JSON 中的 a 值而变化。 { type: 'a', thing: 1, foo: 'abc' } { type: 'b', thing: 2, bar: 123 }
我有一个这样的嵌套模式设置: var schema = Joi.object().keys({ first_name: Joi.string().required(), last_name:
我目前在我的应用程序中有以下架构: Joi.object().keys({ users: Joi.array().items(mySchema) }) 所以我可以获得一组用户并验证它们。但现在我需
您好,我正在使用 "@hapi/joi": "^15.1.1"。很遗憾,我现在无法更新到最新的 Joi 版本。 这是我的验证模式 const schema = { name: Joi.str
我正在尝试验证一个架构,该架构与其他字段一起具有一系列自引用对象,如下所示: export const answer = answerModel.concat(Joi.object().keys({
我在 Joi 验证方面遇到了一个问题(或者我认为是一个问题)。如果它作为请求正文的一部分传递,我正在尝试为不存在的键分配一个值。 例如: parameters: Joi.object().keys({
我想为 populatedString 创建自定义 Joi 类型,方法是使用 .extend(..) 创建一个基于 joi.string() 的类型 其中: trim 字符串 如果 trimmed s
我必须逐个验证值,而不是为多个值传入整个架构。基于此处的单值验证文档 https://hapi.dev/module/joi/ 和这个示例代码 const validator: AnySchema =
我尝试使用 Joi.alternatives.try() 创建一个 Joi 模式.这是我尝试过的模式。 Joi.alternatives().try(Joi.object({ type: Jo
我是一名优秀的程序员,十分优秀!