如何将JSON模式转换为mongoose模式

时间:2017-02-19 11:28:16

标签: node.js mongoose schema jsonschema

有没有办法像下面那样采用有效的JSON模式并将其转换为mongoose模式?

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "some desc",
  "title": "Product",
  "type": "object",
  "properties": {
    "endpoints": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "poi": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "location_name": {
            "type": "string"
          },
          "distance": {
            "type": "string"
          }
        }
      }
    }
  }
}

这对我来说似乎很简单,但我在网上找不到任何东西 有大量关于如何获取JSON模式的示例,并且有大量示例如何从这样的对象创建mongoose模式:
const newSchema = new mongoose.Schema({ name: String });

如果我尝试直接放置JSON架构,我会收到错误

node_modules/mongoose/lib/schema.js:674
    throw new TypeError('Undefined type `' + name + '` at `' + path +
    ^

TypeError: Undefined type `Http://json-schema.org/draft-04/schema#` at `$schema`
  Did you try nesting Schemas? You can only nest using refs or arrays.

但我无法找到从一种类型转移到另一种类型的网络上的任何地方 以前有人遇到过这个问题吗?

编辑:

这个问题在概念上是不正确的 基本上,您所做的是针对之前的数据验证JSON模式将其保存到数据库。您可以使用来自npm或其他人的jsonschema来执行此操作 因此,数据验证步骤与保存到DB步骤没有直接关联 我以为你可以将JSON模式应用于MongoDB模式,但事实并非如此。 (特别是当你有深层嵌套的对象时 - 那就太乱了)

2 个答案:

答案 0 :(得分:1)

我一直在研究这个问题。由于您在问题上放置了node标记,因此我找到了这些npm repos:

到目前为止两者都在运作。

他们都是几岁。前者(TypeScript)有最近的提交。我可能最终更喜欢后者。

答案 1 :(得分:-3)