Hola, tengo un esquema de mangosta para una babosa. Quiero comprobar la singularidad de la misma
slug: { type: String, default: "", trim: true, validate: { validator: async function (value) { const user = await this.model.findOne({ slug: value }); console.log(user); console.log(this); if (user) { if (this.id === user.id) { return true; } return false; } return true; }, message: (props) => "This slug is already in use", }, },esta validación funciona bien al insertar un nuevo documento, pero en caso de actualización, quiero compararlo con todos los demás campos del esquema que no sean él mismo. ¿Cómo podría hacer eso?
I have also added runValidators to check validation when updating also
CMS.pre("findOneAndUpdate", function () { this.options.runValidators = true; });si puede sugerir una mejor manera de verificar la singularidad de slug en mongoose al insertar y actualizar
Gracias por adelantado
¿Por qué estás usando un validador? ¿Por qué no asegurarse de que el slug sea único definiendo un índice?
const User = new Schema({ slug: { type: String, default: "", trim: true, unique: true, } });Sin embargo, deberá detectar el error cuando intente insertar un usuario ya existente, ya que la opción única no es un validador . Consulte: ¿Cómo detectar el error al insertar un documento MongoDB que viola un índice único?
Referencia: