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