我喜欢mongoose 带来的验证.我们正试图弄清楚是否要使用它,并忍受开销.有人知道在创建mongoose模式时是否提供对父集合的引用(在子模式中,将父对象的对象id指定为字段),这是否意味着每次try 保存文档时,它都会判断父集合是否存在引用的对象id?

推荐答案

我正在使用中间件,在验证时搜索元素:

ExampleSchema = new mongoose.Schema({

    parentId: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Example'
    }

});

ExampleModel = mongoose.model('Example', ExampleSchema);

ExampleSchema.path('parentId').validate(function (value, respond) {

    ExampleModel.findOne({_id: value}, function (err, doc) {
        if (err || !doc) {
            respond(false);
        } else {
            respond(true);
        }
    });

}, 'Example non existent');

Mongodb相关问答推荐

MongoDB中的字符串聚合

MongoDB-如何过滤和获取数组字段中的最新数据

如何在MongoSH中的现有文档中插入字段

MongoDB对两个串联数组进行排序

如何用Python和MongoDB找到单据字段的最大值?

MongoDB 在一个聚合中包含多个组

Mongodb,在一个查询中用正则表达式更新部分字符串

MongoDB:如何将所有文档合并到聚合管道中的单个文档中

如何过滤查找mongodb的结果

如何在 2 个应用程序之间共享mongoose模型?

如何将 json 字符串编组到 bson 文档以写入 MongoDB?

无法提取地理键,经度/纬度超出范围

我怎样才能排序空值在 mongodb 中是最后排序的?

MongoDB 文档操作是原子的和隔离的,但它们是否一致?

Flask and Mongo

MongoDB - 投影一个并不总是存在的字段

MongoDB - Permission denied for socket: /tmp/mongodb-27017.sock

MongoDB MapReduce - 发出一个键/一个值不调用reduce

如何在mongoose的嵌套填充中 Select 特定字段

试图从 mongoose 获取Collection 列表