Find()函数retunrs undefined – Mongoose和Node.js

我试图用Node.js和Mongoose做一个简单的函数,如果模型是空的,返回true。

mongooseconfiguration是好的:

var mongoose = require('mongoose'); var db = mongoose.createConnection( 'mongodb://localhost:27017/prueba' ); var userSchema = mongoose.Schema({ phoneNumber: Number, name: String }); var User = db.model('User', userSchema, 'User''); 

然后我试图做到这一点:

 User.find(function(err, data) { if (err) {console.log(err)}; console.log(data.length == 0 ); }); 

它工作正常,它logging真实,或错误。

然后我试着做:

 var isUsersEmpty = function () { User.find(function(err, data) { if (err) {console.log(err)}; console.log(data.length == 0); }); } isUsersEmpty(); 

再次,它工作正常,它logging真或假,如果我这样做,购买:

 var isUsersEmpty2 = function () { User.find(function(err, data) { if (err) {console.log(err)}; return data.length == 1; }); } console.log(isUsersEmpty2()); 

然后日志打印“未定义”。 如果我需要一个返回true或false的函数来做这样的事情,我该怎么办:

 if (isUsersEmpty2()) {} //Do something here... 

而isUsersEmpty2()总是返回undefined。

isUsersEmpty2()返回一个promise,这意味着你不能像你一样logging它。 你需要从这个函数发送一个响应。 这应该工作:

 var isUsersEmpty2 = function (res) { User.find(function(err, data) { if (err) res(err, null); res(null, data.length == 1); }); } isUsersEmpty2(function(err, res) { if(res) {/*do something*/} });