MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Mensagens de erro personalizadas com o Mongoose


O parâmetro exclusivo não é compatível com mensagens personalizadas?

A exclusividade no Mongoose não é um parâmetro de validação (como required ); ele diz ao Mongoose para criar um índice exclusivo no MongoDB para esse campo.

A restrição de exclusividade é tratada inteiramente no servidor MongoDB. Quando você adiciona um documento com uma chave duplicada, o servidor MongoDB retornará o erro que você está mostrando (E11000... ).

Você mesmo precisa lidar com esses erros se quiser criar mensagens de erro personalizadas. A documentação do Mongoose ("Middleware de manipulação de erros" ) fornece um exemplo de como criar tratamento de erros personalizado:
emailVerificationTokenSchema.post('save', function(error, doc, next) {
  if (error.name === 'MongoError' && error.code === 11000) {
    next(new Error('email must be unique'));
  } else {
    next(error);
  }
});

(embora isso não forneça o campo específico para o qual a restrição de exclusividade falhou)