J'écris un serveur NodeJS avec ExpressJS, PassportJS, MongoDB et MongooseJS. Je viens juste de réussir à ce que PassportJS utilise les données utilisateur obtenues via Mongoose pour s’authentifier.
Mais pour que cela fonctionne, je devais utiliser une fonction "findById" comme ci-dessous.
var UserModel = db.model('User',UserSchema);
UserModel.findById(id, function (err, user) { < SOME CODE > } );
UserModel
est un modèle Mongoose. Je déclare le schéma, UserSchema
plus tôt. Donc, je suppose que UserModel.findById()
est une méthode du modèle Mongoose?
Question
Que fait findById
et existe-t-il une documentation à ce sujet? J'ai googlé un peu mais je n'ai rien trouvé.
findById
est une méthode pratique sur le modèle fourni par Mongoose pour rechercher un document à l'aide de son _id. La documentation pour cela peut être trouvée ici .
Exemple:
// Search by ObjectId
var id = "56e6dd2eb4494ed008d595bd";
UserModel.findById(id, function (err, user) { ... } );
Sur le plan fonctionnel, cela revient à appeler:
UserModel.findOne({_id: id}, function (err, user) { ... });
Notez que Mongoose transtypera la valeur id
fournie au type _id
comme défini dans le schéma (ObjectId par défaut).
Si le schéma d'id n'est pas de type ObjectId, vous ne pouvez pas utiliser la fonction: findbyId ()
Contrairement à find () qui peut renvoyer un ou plusieurs documents, findById () ne peut renvoyer que 0 ou 1 document. Les documents peuvent être considérés comme des enregistrements.