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)