如果没有发现与.find()mongoose做什么

我将一些数据存储在一个mongodb中,并使用js / nodejs和mongoose访问它。 我可以使用.find()在数据库中find一些东西,这不是问题。 问题是如果没有东西,我想做别的事情。 目前这是我想要的:

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); } }); }); 

当我做某些事情时,这些都不会引起act.params的缺陷。 当发生这种情况时,我什么也没有得到任何控制台,但是我确实得到了user.nick,当它实际存在的时候,它就可以很好的logging下来。 我只是试图做到这一点倒过来:

 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'); } }); }); 

但是这仍然没有logging。 我在这里错过了什么?

如果找不到它,它只是在查找调用中跳过所有的东西,这很好,除非我需要事后做,否则我不想这样做。 :/

如果没有匹配find()返回[] ,而findOne()返回null 。 所以要么使用:

 Model.find( {...}, function (err, results) { if (err) { ... } if (!results.length) { // do stuff here } } 

要么:

 Model.findOne( {...}, function (err, result) { if (err) { ... } if (!result) { // do stuff here } } 
 UserModel.find({ nick: act.params }, function (err, users) { if (err) { console.log(err) }; if (!users.length) { //do stuff here }; else { users.forEach(function (user) { console.log(user.nick); }); } }); 

是我发现的工作。

我不得不使用:

  if(!users.length) { //etc } 

得到它的工作。