使用 JSON-Schema 定义模式并使用 Mongoose?

Posted

技术标签:

【中文标题】使用 JSON-Schema 定义模式并使用 Mongoose?【英文标题】:define a schema with JSON-Schema and use Mongoose? 【发布时间】:2015-05-28 03:42:07 【问题描述】:

你好, 我有一个症结要忍受猫鼬。 有没有办法将 JSON-Shema 与 Mongoose Schemas 一起使用? 假设我想使用 JSON-Schema 之类的标准定义我的 API 数据模式,因为它很好。 当我想使用 Mongoose / MongoDB 时,似乎需要再次定义它! 这是我想避免的一些丑陋的重复。理想情况下,更改 JSON-Schema 定义也会更改 MongoDB 模式。 如果我使用 JOI.JS 验证库,会出现类似的问题。 有没有人找到解决方案? 还是有其他方法?

谢谢

【问题讨论】:

我确信可以获取您的 json-schema 并使用 javascript 自动将其转换为 mongoose 模式。归根结底,一旦你解析它们,它们就只是对象。 虽然这很公平,但我想知道过去是否有人做过类似的事情并将这种努力提供给每个人,因为这对我来说似乎是一个非常明显的问题。我研究了工具,但目前找不到。 npmjs.com/package/json-schema-converter 我将 json-schema-converter 更新为 npmjs.com/package/json-schema-to-mongoose,因为似乎不再维护 json-schema-converter。 【参考方案1】:

试试这个库:https://www.npmjs.com/package/json-schema-to-mongoose 还有其他的。我创建了json-schema-to-mongoose,因为其他库不太适合我的需求。

另外,我喜欢使用TypsonTypeScript 生成json-schema。它使json-schema 更加静态类型化。

更新

看来Typson 项目已经死了。这是另一个 (typescript-json-schema) 项目,它做同样的事情,虽然我从未使用过它。

【讨论】:

【参考方案2】:

在这里插话,因为我也遇到了这个问题,并找到了可以替代所提供建议的解决方案。

可以使用https://github.com/nijikokun/generate-schema 获取一个普通的 JS 对象并将其转换为 JSON Schema 和 Mongoose Schema。我发现这个工具在通过验证和持久性改造现有代码的情况下更容易,因为您可能已经有一个示例对象可以开始。

【讨论】:

以上是关于使用 JSON-Schema 定义模式并使用 Mongoose?的主要内容,如果未能解决你的问题,请参考以下文章

使用json-schema校验json数据

使用 Spring 定义 Mongo 模式验证

使用 json-schema 来要求或禁止基于另一个属性值的属性?

如何使用 json 模式文件测试 json 文件

如何从 Json schem 文件创建 DataFrame Schema

Json-schema-如何验证特定元素不在数组中?