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

7
您好, 我在使用Mongoose时遇到了一个问题。 是否有一种方法可以在Mongoose模式中使用JSON-Shema? 比如说,我想使用像JSON-Schema这样的标准来定义我的API数据模式,因为这很好用。 当我想要使用Mongoose / MongoDB时,似乎需要重新定义它! 这是相当丑陋的重复,我希望能够避免。理想情况下,更改JSON-Schema定义也会更改MongoDB模式。 如果我要使用JOI.JS验证库,类似的问题也会出现。 有人找到解决方案了吗? 或者有没有其他的方法?
谢谢。

1
我相信使用JavaScript可以将您的json-schema自动转换为mongoose模式。最终,一旦您解析它们,它们就只是对象。 - Kevin B
虽然这很公平,但我想知道是否有人过去做过类似的事情并将其提供给所有人,因为对我来说这似乎是一个非常明显的问题。我已经研究了工具,但迄今为止还没有找到一个。 - sebbulon
1
https://www.npmjs.com/package/json-schema-converter - Kevin B
2
我将json-schema-converter更新为https://www.npmjs.com/package/json-schema-to-mongoose,因为似乎json-schema-converter不再得到维护。 - Jon49
2个回答

8
尝试使用这个库: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模式和Mongoose模式。如果你需要在现有代码中添加验证和持久化,那么我认为这个工具更容易使用,因为你很可能已经有一个示例对象可以开始使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接