Я пытаюсь обеспечить уникальность по полю на модели mongoose в существующей базе данных.Уникальные поля в Mongoose
const UserSchema = new mongoose.Schema({
email: {
type: String,
required: true,
unique: true,
}
})
Затем, когда я создаю пользователя с электронной почтой, которая уже назначена, она проходит, и у меня есть 2 пользователей с одинаковым адресом.
Я прочитал все связанные ответы SO> 2015 и все о dropDups
, which is deprecated.
Я думаю, что я установил эту проблему вручную, запустив
db.users.createIndex({email:1}, {unique:true})
Однако это, очевидно, становится громоздким и в развитии и в производстве, особенно с учетом mongoose docs состояния, что атрибут заботится о нем:
unique: boolean, следует ли определять уникальный индекс для этого свойства.
Может ли кто-нибудь предоставить четкое решение для обеспечения уникальности по полю на модели Mongoose, учитывая существующую базу данных и новую коллекцию? Благодаря
Возможного простофилю https://stackoverflow.com/questions/30966146/mongoose-schema-unique-not-being-respected – JohnnyHK
@JohnnyHK Как это возможно? Вы предлагаете, чтобы каждый раз, когда вы хотите добавить коллекцию с уникальными полями, вы должны вручную вызвать 'db.collection.dropIndex ('fieldName_1')'? Не отвечает на мой вопрос вообще – softcode
Часто случается так, что вы не понимаете, что коллекция уже имеет (не уникальный) индекс в поле, поэтому Mongoose не добавляет уникальный указатель, который вы определили. Что показывает 'db.users.getIndexes()'? – JohnnyHK