【发布时间】:2017-08-16 08:02:19
【问题描述】:
不确定标题是否准确地解释了问题所在,因此希望这能让您更好地了解我所遇到的问题。
我有一条路线使用与另一条路线几乎完全相同的代码,该路线只有管理员可以访问以进行更新。所以路线“A”:route/update_fees 有一组我想在路线“B”下使用的 Joi 验证:route/update_agent_fees。所以我创建了一个验证文件夹并从路由“A”导出验证这是下面的文件:
"use strict";
const Joi = require("joi");
module.exports = {
payload: {
fees: Joi.object().keys({
default: Joi.array().items(
Joi.object({
period: Joi.number().integer().required().description("Days to consider the fee"),
fee: Joi.number().integer().required().description("Fee's to be charged")
})
).description("Array of fees to be charge in any shipment status").min(1),
fees_status: Joi.object().keys({
101: Joi.array().items(
Joi.object({
period: Joi.number().integer().required().description("Days to consider the fee"),
fee: Joi.number().integer().required().description("Fee's to be charged")
})
).description("Array of fees for 101 shipment status").min(1),
102: Joi.array().items(
Joi.object({
period: Joi.number().integer().required().description("Days to consider the fee"),
fee: Joi.number().integer().required().description("Fee's to be charged")
})
).description("Array of fees for 102 shipment status").min(1),
}).description("Fees customizable for 101 and 102 status").min(1)
}).xor("default", "fees_status")
},
headers: Joi.object({
"csrf-decorator": Joi.string().required(),
"accept-language": Joi.string().required(),
"user-agent": Joi.string().required()
}).options({
allowUnknown: true
})
}
在第二个文件中,我需要路由 A,并添加和修改了路由 B 工作所需的唯一更改:
"use strict";
const Joi = require("joi");
const set_agent_fee_rates_validation = require("./set_agent_fee_rates");
let admin_set_agent_fee_rates_validation = set_agent_fee_rates_validation;
admin_set_agent_fee_rates_validation.payload.agent_id = Joi.string().required();
module.exports = admin_set_agent_fee_rates_validation;
问题是,当我大摇大摆时,我可以看到两个 api 端点都需要agent_id,而应该只在路由 B 中需要它。
对于理解这里的问题的任何帮助将不胜感激。谢谢!
【问题讨论】:
标签: node.js validation hapijs joi