Find() 函数返回 undefined - Mongoose 和 Node.js
Find() function retunrs undefined - Mongoose and Node.js
我试图用 Node.js 和 Mongoose 做一个简单的函数,如果模型为空,returns 为真。
猫鼬配置没问题:
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 );
});
它工作正常,它记录 true 或 false。
然后我尝试这样做:
var isUsersEmpty = function () {
User.find(function(err, data) {
if (err) {console.log(err)};
console.log(data.length == 0);
});
}
isUsersEmpty();
再次它工作正常,它记录 true 或 false,如果我这样做就买:
var isUsersEmpty2 = function () {
User.find(function(err, data) {
if (err) {console.log(err)};
return data.length == 1;
});
}
console.log(isUsersEmpty2());
然后日志打印 "Undefined"。
如果我需要一个 returns true 或 false 的函数来做这样的事情,我该怎么办:
if (isUsersEmpty2()) {} //Do something here...
并且 isUsersEmpty2() returns 始终未定义。
isUsersEmpty2()
returns 一个承诺,这意味着您不能像以前那样记录它。您需要从函数发送响应。这应该有效:
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*/}
});
我试图用 Node.js 和 Mongoose 做一个简单的函数,如果模型为空,returns 为真。
猫鼬配置没问题:
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 );
});
它工作正常,它记录 true 或 false。
然后我尝试这样做:
var isUsersEmpty = function () {
User.find(function(err, data) {
if (err) {console.log(err)};
console.log(data.length == 0);
});
}
isUsersEmpty();
再次它工作正常,它记录 true 或 false,如果我这样做就买:
var isUsersEmpty2 = function () {
User.find(function(err, data) {
if (err) {console.log(err)};
return data.length == 1;
});
}
console.log(isUsersEmpty2());
然后日志打印 "Undefined"。 如果我需要一个 returns true 或 false 的函数来做这样的事情,我该怎么办:
if (isUsersEmpty2()) {} //Do something here...
并且 isUsersEmpty2() returns 始终未定义。
isUsersEmpty2()
returns 一个承诺,这意味着您不能像以前那样记录它。您需要从函数发送响应。这应该有效:
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*/}
});