Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 在Mongoose和Joi之间只维护一个模式的最佳方法大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Hapi开发一个Web服务,Mongoose作为ODM,Joi作为验证器.
我真的很喜欢Joi的验证以及它与HAPI连接的方式(我需要Joi的描述函数显示一些swagger的描述)但是我不想维护两个模式,一个用于Joi,一个用于mongoose;我想使用Joi定义我的模式,然后只能导出Mongoose所需的基本模式.例如: @H_572_3@myscheR_848_11845@a.js

@H_914_5@module.exports = { name : String,address: String } @H_572_3@myValidator.js

@H_914_5@module.exports = { payload: { name: Joi.description('A name').String().required(),address: Joi.description('An address').String() } } @H_572_3@mymodel.js

const mongoose = require('mongoose'),myscheR_848_11845@a = require('./myscheR_848_11845@a');

var scheR_848_11845@aInstance = new mongoose.scheR_848_11845@a(myscheR_848_11845@a),mymodel = mongoose.model('mymodel',scheR_848_11845@aInstancE);
@H_572_3@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
    }
}
...

我想避免维护myscheR_848_11845@a.js文件从Joi的架构中生成它的麻烦.

有关如何做或任何不同方法的任何建议?

解决方法

对于这个问题,您可以使用 Joigoose将您的Joi架构转换为Mongoose架构,如下例所示:
const mongoose = require('mongoose')
const joi = require('joi')
const joigoose = require('joigoose')(mongoosE)

const joischeR_848_11845@a = joi.object().keys({
  name: joi.description('A name').String().required(),address: joi.description('An address').String()
})

const mongoosescheR_848_11845@a = new mongoose.scheR_848_11845@a(joigoose.convert(joischeR_848_11845@a))

mongose.model('Model',mongoosescheR_848_11845@a)

大佬总结

以上是大佬教程为你收集整理的node.js – 在Mongoose和Joi之间只维护一个模式的最佳方法全部内容,希望文章能够帮你解决node.js – 在Mongoose和Joi之间只维护一个模式的最佳方法所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。