Reputation: 4062
Presently being driven up the wall by this error.
I am running a node.js app with the mongojs wrapper for mongodb. I Started mongod on the default port, then ran
var db = require('mongojs').connect('localhost:27017/my_db');
var users = db.collection('users');
users.findOne({'fb_id' : fbUserMetadata.id}, function(err, user) {
console.log(err);
console.log(user);
debugger;
});
however err and user are both 'null'. To my knowledge, err should be populated with some kind of data even if it doesn't find anything.
How do I get the callback function to work properly? Pardon the newbie question.
Upvotes: 5
Views: 6979
Reputation: 312149
When the findOne
query doesn't find at least one matching document, the second parameter of the callback (in this case user
) is set to null
. It's not an error, so err
is also null
. So what you're seeing is the expected no-match-found response.
Update
Note that findOne
has been deprecated in the 2.0 driver, but its replacement also exhibits this same behavior:
users.find({'fb_id' : fbUserMetadata.id}).limit(1).next(err, doc) {
// doc is null if a matching document wasn't found
});
Upvotes: 10