J'essaie actuellement d'ajouter un validateur personnalisé à mon schéma. Pour une raison quelconque, je ne peux pas interroger la base de données. Est-ce que quelqu'un sait une solution pour mon problème?Validateur personnalisé Mongoose: vérifiez si la valeur existe dans la base de données
C'est le schéma:
var Portfolio = new Schema({
title: {
type: String,
required: [true, 'Title is required']
},
thumbnail: {
type: String,
required: [true, 'Thumbnail is required'],
},
description: String,
date: Date,
images: [String],
categories: [Schema.Types.ObjectId],
order: Number,
slug: {
type: String,
validate: {
validator: slugExists,
message: 'Slug already exists, choose a different title',
}
}
}, options);
Ceci est la méthode qui vérifie si les données existent:
function slugExists(value) {
this.model.count({slug: value}, function(err, count) {
if (error) {
return err;
}
return count > 0;
});
}
Quand je lance l'application que je reçois le message d'erreur suivant:
TypeError: this.model.count is not a function
J'ai également essayé d'utiliser ce qui suit:
mongoose.model['portfolio'].count(...)
mais le résultat est le même.
J'ai essayé de résoudre le problème pendant deux heures maintenant, même essayé différentes approches (par exemple le pré crochet). Mais l'ajout de la validation personnalisée directement au schéma semble être l'entrée la plus propre.
J'espère que vous avez une solution pour moi. Merci d'avance!
Jeffrey
Hm ... pourquoi ne pas simplement ajouter un index 'unique' sur' slug'? Néanmoins, cette [réponse] (https://stackoverflow.com/a/14271900/1022914) pourrait vous guider quelque part. Avez-vous essayé 'mongoose.model ('portfolio'). Count (...)'? – Mikey
Merci pour votre réponse Mikey. Malheureusement, les deux solutions ne fonctionnent pas. Je continue à recevoir l'erreur suivante: Impossible de lire la propriété 'count' de undefined. – Jeffrey