【发布时间】:2021-06-13 00:13:59
【问题描述】:
我查看了一个现有的代码库,我注意到代码库有两个架构验证,我认为单个架构可以验证,因为第二个架构是第一个架构的分支。 请参阅下面的代码库。
export const StudentSchema = Joi.object().keys({
_id,
name,
dob,
gender,
grade
});
export const StudentUpdateSchema = Joi.object().keys({
name,
dob,
})
现在这些模式正在以下路线中使用:
//CREATE ROUTE
{
method: 'POST',
path: '/students/{id}',
handler: async (request) => {
const { id } = request.params;
return Student.create(id, request.payload);
},
options: {
...sharedOptions,
description: 'Enrolling a student',
validate: {
failAction,
payload: StudentSchema,
params: {
studentId: Joi.objectId().required()
},
},
response: {
status: {
200: StudentSchema,
400: Joi.any(),
},
},
},
},
// UPDATE ROUTE
{
method: 'PUT',
path: '/students/{id}',
handler: async (request) => {
const { id } = request.params;
return Student.update(Id, { $set: request.payload });
},
options: {
...sharedOptions,
description: 'Update student details',
validate: {
failAction,
payload: StudentUpdateSchema,
params: {
studentId: Joi.objectId().required(),
},
},
response: {
status: {
200: StudentSchema,
400: Joi.any(),
404: Joi.any(),
},
},
},
}
我是 Hapi 的新手,但对 Express 和 Mongoose 有一些经验,我倾向于重写这些验证,以便在“POST”和“PUT”方法中仅使用 StudentSchema,因为 StudentSchema 包含所需的所有内容处理创建和更新功能。
任何有 HapiJS 经验的人都可以验证使用单个架构对象(在本例中为 StudentSchema)的优缺点,还是我应该继续使用两种架构的当前范例?
【问题讨论】:
标签: javascript node.js mongodb hapijs joi