我正在使用 Hapi 开发 Web 服务,Mongoose 作为 ODM,Joi 作为验证器。我真的很喜欢 Joi 的验证以及它与 HAPI 连接的方式(我需要 Joi 的描述函数来大摇大摆地显示一些描述),但我不想维护两种模式,一种用于 Joi,一种用于猫鼬;我想使用 Joi 定义我的模式,然后只能导出 Mongoose 所需的基本模式。例如:
mySchema.js
module.exports = {
name : String,
address: String
}
myValidator.js
module.exports = {
payload: {
name: Joi.description('A name').string().required(),
address: Joi.description('An address').string()
}
}
myModel.js
const mongoose = require('mongoose'),
mySchema = require('./mySchema');
var schemaInstance = new mongoose.Schema(mySchema),
myModel = mongoose.model('myModel', schemaInstance);
myHapiRoute.js
const myValidator = require('./myValidator.js'),
myController = require('./myController.js');
...
{
method: 'POST',
path: '/create',
config: {
description: 'create something',
tags: ['api'],
handler: myController,
validate: myValidator
}
}
...
我想避免维护mySchema.js文件完全从 Joi 的模式生成它的麻烦。
关于如何做到这一点或任何不同的方法的任何建议?