【发布时间】:2018-05-25 06:09:31
【问题描述】:
我正在将现有的 Hapi 16 应用程序移植到 Hapi 17 - 并且遇到了 Joi 验证问题...
<!-- language: lang-js -->
'use strict';
const Joi = require('joi');
const validator = Joi.object({
"sku": Joi.string().required(),
"name": Joi.string()
// cut for berevity..
)
})
module.exports = {
method: ["POST", "PUT"],
path: "/api/products",
options: {
validate: {
params: validator
},
async handler(request, h) {
try {
const updateOrCreateItemQuery = { sku: request.payload.sku };
const result = await request.postItem( "product", updateOrCreateItemQuery);
return result;
} catch (err) {
throw h.internal("Internal MongoDB error", err);
}
}
}
};
当我启动应用程序时(不是当我访问路线时)我收到以下错误:{ AssertionError [ERR_ASSERTION]: Cannot set path parameters validations without path parameters: POST /api/products
我已经把所有东西都剥离了——所以它就是这条路线。它肯定与 Joi 有关,因为当我删除验证时 - 它有效......我已经阅读了文档 - 并且看不出我做错了什么......
(我已将各种装饰器应用于请求对象 - 例如 postItem 等,它...将项目发布到数据库)
【问题讨论】:
-
一个朋友告诉我我不需要 Joi 对象 - 我应该将验证模式作为一个普通的旧对象传递。我在火车上...回家后会测试:)
标签: node.js validation hapijs joi