Как справиться самостоятельно с ошибками множественных уникальностей в мангусте? - PullRequest
0 голосов
/ 11 октября 2019

У меня есть схема с несколькими уникальными типами, подобными этой:

var userSchema = new mongoose.Schema({
  user: {
    type: String,
    unique: true
  },
  email: {
    type: String,
    unique: true
  }
});

Во время попытки сохранения я знаю, что могу получить доступ к свойству err.code (11000) для обработки уникальных ошибок, вот так:

user.save((err, doc) => {
    if(!err) {
      res.send(doc);
    } else {
      if (err.code == 11000)
        res.status(422).send(['Message here!']);
    }
  });

Итак, в этом случае я бы хотел установить пользовательские сообщения для обоих полей: user и email . Есть ли способ сделать это?

1 Ответ

0 голосов
/ 11 октября 2019

Я нашел способ сделать это, отправив object error и проверив его свойства, и заметил, что есть свойство с именем keyPattern .

. , код работает нормально:

user.save((err, doc) => {
    if(!err) {
      res.send(doc);
    } else {
      if (err.code == 11000)
        if(Object.keys(err.keyPattern)[0] === "user")
          res.status(422).send(['Duplicate user!']);
        else if(Object.keys(err.keyPattern)[0] === "email")
          res.status(422).send(['Duplicate email!']);
    }
  });
...