【问题标题】:Using only JsonSchema with Mongoose possible?仅使用带有 Mongoose 的 JsonSchema 可能吗?
【发布时间】:2017-01-21 17:06:12
【问题描述】:

我有一个使用 express、mongodb 的 api,并且我使用 AJV 验证来验证传入的请求。

//JSONSchema
var recordJsonSchema = {
     type: "object",
     properties: {
         name: { type: "string" },
         idNumber: { type: "number" },
         content: { type: "string" }
     },
     required: ['name','idNumber']
}

我会使用这个 JSON 模式来验证传入的请求。

app.post('/record', (req,res) => {
   let errors = ajv.inspect(req.body, recordJsonSchema)
   return errors ? res.send(errors) : res.send(this.handler(req));
})

这很好用而且速度非常快。我也喜欢 JsonSchema,因为它遵循 OpenAPI 标准。

不幸的是,为了通过 mongoose 读/写 mongo,我还需要为 Record 创建一个 MongoSchema。它们非常相似,但在处理必填字段等方面略有不同。

var recordSchema = new Schema({
   name: { type: "string", required: true },
   idNumber: { type: "number", required: true },
   content: { type: "string" }
})

所以对于我的 Record 模型,我现在有两个模式。一种用于 JSONschema,一种用于处理 Mongo 读/写。

我正在寻找一种切割 MongoSchema 的方法,有什么建议吗?

【问题讨论】:

  • 您的解决方案是什么?这是我遇到的确切问题。如果 Mongoose 已经内置了,我不想同时使用它们。

标签: node.js mongodb validation express jsonschema


【解决方案1】:

也许这样,它似乎从条目中导入了您的 ajv 架构并将其放置在 mongoose 架构中。 https://www.npmjs.com/package/mongoose-ajv-plugin

【讨论】:

  • 欣赏这个建议,但这仍然需要编写两个架构。
【解决方案2】:

我也遇到过同样的问题。我认为在新的 mongo 4.4 中我们可以将 ajv 模式直接加载到 mongodb https://docs.mongodb.com/manual/reference/operator/query/jsonSchema/

【讨论】:

    猜你喜欢
    • 2019-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多