首页 > 解决方案 > Mongoose 不强制执行唯一性

问题描述

我有这个架构。它不会在 zipCode 字段中强制执行唯一性。它在我实现时间戳之前的某个时候工作,但现在似乎没有。我不确定我做错了什么。我曾尝试删除数据库,但即使所有新增内容都允许重复。

    const ZipCodeSchema = new Schema({
    zipCode: {
        type: String,
        required: true,
        unique: true,
        index: true
    },
    price: {
        type: Currency,
        min: 0,
        required: true
    },
    createdBy: {
        type: Schema.Types.ObjectId,
        ref: 'Users',
        required: true
    },
    updatedBy: {
        type: Schema.Types.ObjectId,
        ref: 'Users',
        required: true
    },
    active: {
        type: Boolean,
        default: true,
    },
    neighborhood: {
        type: String,
        required: true,
        unique: true
    }
},
{
    timestamps: true
});

标签: node.jsmongodbmongoose

解决方案


在某些时候,无论是手动还是作为安装/启动脚本的一部分,您都需要确保在mongodb 实例上创建索引。一种方法是使用ensureIndexes方法

ZipCode.ensureIndexes(function (err) {
  if (err) return handleError(err);
});

推荐阅读