11

假设我有一个 javascript 对象(data),我想检查它是否符合Schema我定义的给定。

有没有办法做到这一点,而无需将模式转换为模型,创建一个填充了data, 并运行的模型实例mymodel.validate()

我很想有一个Schema(definition).validate(data, callback),但validate函数是在Document类上定义的,据我所知。

4

3 回答 3

1

2021 年更新

Mongoose在 2019 年(v5.8.0)将该功能添加为Model.validate(... ) :

你可以:

try {
  await Model.validate({ name: 'Hafez', age: 26 });
} catch (err) {
  err instanceof mongoose.Error.ValidationError; // true
}
于 2021-11-10T03:59:24.257 回答
0

一种方法是在自定义验证器的帮助下执行此操作。当验证被拒绝时,它无法将文档保存到数据库中。

或者通过 MongoDB 提供的具有与您定义的相同架构的 validate() 函数来实现此目的的另一种方法。

于 2020-04-22T19:24:14.300 回答
0

您可以在 Mongo 侧链接
上验证您的架构 例如:

db.createCollection("students", {
   validator: {
      $jsonSchema: {
         bsonType: "object",
         required: [ "name" ],
         properties: {
            name: {
               bsonType: "string",
               description: "must be a string and is required"
            },
            year: {
               bsonType: "int",
               minimum: 2017,
               maximum: 3017,
               description: "must be an integer in [ 2017, 3017 ] and is required"
            }
         }
      }
   }
})
于 2021-09-18T21:42:47.947 回答