Ошибка дублированного ключа mongoose с пустой строкой - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть такая схема:

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
        }
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...