How to use mongoose findOne How to use mongoose findOne mongoose mongoose

How to use mongoose findOne


Found the problem, need to use function(err,obj) instead:

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


Mongoose basically wraps mongodb's api to give you a pseudo relational db api so queries are not going to be exactly like mongodb queries. Mongoose findOne query returns a query object, not a document. You can either use a callback as the solution suggests or as of v4+ findOne returns a thenable so you can use .then or await/async to retrieve the document.

// thenablesAuth.findOne({nick: 'noname'}).then(err, result) {console.log(result)};Auth.findOne({nick: 'noname'}).then(function (doc) {console.log(doc)});// To use a full fledge promise you will need to use .exec()var auth = Auth.findOne({nick: 'noname'}).exec();auth.then(function (doc) {console.log(doc)});// async/awaitasync function auth() {  const doc = await Auth.findOne({nick: 'noname'}).exec();  return doc;}auth();

See the docs if you would like to use a third party promise library.


In my case same error is there , I am using Asyanc / Await functions , for this needs to add AWAIT for findOne

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

above , foundUser always contains Object value in both cases either user found or not because it's returning values before finishing findOne .

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

above , foundUser returns null if user is not there in collection with provided condition . If user found returns user document.