58 votes

Comment utiliser la mangouste findOne

J'ai le schéma ci-dessous (excuses qu'il soit en coffeescript)

 Schema = mongoose.Schema

AuthS = new Schema
    auth:   {type: String, unique: true}
    nick:   String
    time:   Date
Auth = mongoose.model 'Auth', AuthS

Je veux simplement récupérer un enregistrement qui est définitivement dans ma base de données :

 Auth.findOne({nick: 'noname'}, function(obj) { console.log(obj); });

Malheureusement, cela enregistre toujours null . db.auths.findOne({nick: 'noname'}) dans mongo shell renvoie toujours une valeur. Que se passe-t-il?

101voto

Callum Rogers Points 6769

J'ai trouvé le problème, vous devez utiliser function(err,obj) place :

 Auth.findOne({nick: 'noname'}, function(err,obj) { console.log(obj); });

6voto

Bhagvat Lande Points 140

Dans mon cas, la même erreur est là, j'utilise les fonctions Asyanc/Await, pour cela, il faut ajouter AWAIT pour findOne

 Ex:const foundUser = User.findOne ({ "email" : req.body.email });

ci-dessus, foundUser contient toujours la valeur de l'objet dans les deux cas, que l'utilisateur ait trouvé ou non, car il renvoie des valeurs avant de terminer findOne .

 const foundUser = await User.findOne ({ "email" : req.body.email });

ci-dessus, foundUser renvoie null si l'utilisateur n'est pas présent dans la collection avec la condition fournie. Si l'utilisateur est trouvé, renvoie le document de l'utilisateur.

2voto

Neil Guy Lindberg Points 1089

Vous pouvez envisager d'utiliser console.log avec l'objet "arguments" intégré :

 console.log(arguments); // would have shown you [0] null, [1] yourResult

Cela produira toujours tous vos arguments, quel que soit le nombre d'arguments que vous avez.

0voto

NaturalCoder Points 108

Utilisez obj[0].nick et vous obtiendrez le résultat souhaité,

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X