I'm storing some data in a mongodb and accessing it with js/nodejs and mongoose. I can use .find() to find something in the database just fine, that isn't an issue. What is a problem is if there isn't something, I'd like to do something else. Currently this is what I'm trying:
UserModel.find({ nick: act.params }, function (err, users) { if (err) { console.log(err) }; users.forEach(function (user) { if (user.nick === null) { console.log('null'); } else if (user.nick === undefined) { console.log('undefined'); } else if (user.nick === '') { console.log('empty'); } else { console.log(user.nick); } }); });
None of those fire when I do something where act.params wouldn't be in the nick index. I don't get anything to console at all when this happens, but I do get user.nick to log just fine when it's actually there. I just tried to do it in reverse like this:
UserModel.find({ nick: act.params }, function (err, users) { if (err) { console.log('noooope') }; users.forEach(function (user) { if (user.nick !== '') { console.log('null'); } else { console.log('nope'); } }); });
but this still didn't log nope
. What am I missing here?
If it doesn't find it, it just skips everything in the find call, which is fine, except I need to do things afterwards if it isn't there that I don't want to do if it is. :/
find() function returns an instance of Mongoose's Query class. The Query class represents a raw CRUD operation that you may send to MongoDB. It provides a chainable interface for building up more sophisticated queries. You don't instantiate a Query directly, Customer.
Mongoose queries are not promises. However, they do have a . then() function for yield and async/await.
The value of the $in operator is an array that contains few values. The document will be matched where the value of the breed field matches any one of the values inside the array.
Mongoose is an Object Data Modeling (ODM) library for MongoDB and Node. js. It manages relationships between data, provides schema validation, and is used to translate between objects in code and the representation of those objects in MongoDB.
When there are no matches find() returns []
, while findOne() returns null
. So either use:
Model.find( {...}, function (err, results) { if (err) { ... } if (!results.length) { // do stuff here } }
or:
Model.findOne( {...}, function (err, result) { if (err) { ... } if (!result) { // do stuff here } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With