У меня есть такая схема:
const MemberSchema = mongoose.Schema({
name: {
type: String,
},
email: {
type: String,
unique: true
},
phone: {
type: String,
unique: true
}
})
и, конечно, электронная почта и телефон должны быть уникальными, но дело в том, что электронная почта или телефон необязательны, поэтому они могут быть пустой строкой.
и когда вы устанавливаете их как уникальный индекс, я получаю эту ошибку
E11000 duplicate key error collection: model.members index: email_1 dup key: { : "" }'
Есть ли способ добавить исключение к уникальному?
Редактировать
Я изменил свой код, как показано ниже, но все еще не работает.
email: {
type: String,
trim: true, index: true, unique: true, sparse: true
},
\
'E11000 duplicate key error collection: email-collector.members index: email_1 dup key:{ : null }'
когда я запускаю getIndexes, я получаю
> db.members.getIndexes()
[
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "email-collector.members"
},
{
"v" : 2,
"unique" : true,
"key" : {
"email" : 1
},
"name" : "email_1",
"ns" : "email-collector.members",
"sparse" : true,
"background" : true
},
{
"v" : 2,
"unique" : true,
"key" : {
"email" : 1,
"phone" : 1
},
"name" : "email_1_phone_1",
"ns" : "email-collector.members",
"sparse" : true
}
]