猫鼬没有返回,但是 mongo shell 是
Mongoose not returning, but mongo shell is
我在我的节点应用程序上使用 mongoose,我想通过其电子邮件联系卖家:
getSellerByEmail : function(email,next){
var Seller = mongoose.model('Seller');
console.log(inspect(email));
Seller.findOne({'email' : new RegExp(email, 'i')}, function(seller){
next(seller);
});
}
当我尝试登录时,mongoose 没有 return 新用户。但是当我尝试使用相同的电子邮件创建另一个用户时,服务器正确执行此功能并且它 return 是新用户。
也尝试使用 {'email' : email}
和它 returns null
,但是当我在 mongo shell 上执行此查询时,它 return正确。
db.sellers.findOne({email : 'email@email.email'});
{
"_id" : ObjectId("54b94759b042bdbf19cb7b97"),
"name" : "Nome da Empresa",
"cnpj" : "123123123",
"email" : "email@email.email",
"password" : "aUvW8Bux3CwUMok8ac12Sehbd.xCHnVUI51ZwhtGKBjkSa6/MrqUu",
"__v" : 0
}
我是 mongodb + mongoose 的新手,所以我知道这是一个愚蠢的问题,但我就是不知道哪里出了问题...我还创建了一个 findSellerById()
函数,而且它工作得很好。
编辑 1:
使用 Mongoose 调试,这是打印的内容:
Mongoose: sellers.findOne({ email: 'email@email.email' }) { fields: undefined }
Mongoose: sellers.findOne({}) { fields: undefined }
如你所见,也尝试过不带参数,没有成功...
我遇到了同样的问题,也许你可以试试这个:
Seller.find({email: seller.email}, function(err, seller){
console.log(seller);
});
这解决了我的问题,希望它也能解决你的问题!
传递给 findOne
的回调函数有两个参数(error 和 doc),因此您将 seller
视为错误参数而不是 doc 参数。
因此您的函数应该如下所示:
getSellerByEmail : function(email,next){
var Seller = mongoose.model('Seller');
console.log(inspect(email));
Seller.findOne({'email' : new RegExp(email, 'i')}, function(err, seller){
next(seller);
});
}
我在我的节点应用程序上使用 mongoose,我想通过其电子邮件联系卖家:
getSellerByEmail : function(email,next){
var Seller = mongoose.model('Seller');
console.log(inspect(email));
Seller.findOne({'email' : new RegExp(email, 'i')}, function(seller){
next(seller);
});
}
当我尝试登录时,mongoose 没有 return 新用户。但是当我尝试使用相同的电子邮件创建另一个用户时,服务器正确执行此功能并且它 return 是新用户。
也尝试使用 {'email' : email}
和它 returns null
,但是当我在 mongo shell 上执行此查询时,它 return正确。
db.sellers.findOne({email : 'email@email.email'});
{
"_id" : ObjectId("54b94759b042bdbf19cb7b97"),
"name" : "Nome da Empresa",
"cnpj" : "123123123",
"email" : "email@email.email",
"password" : "aUvW8Bux3CwUMok8ac12Sehbd.xCHnVUI51ZwhtGKBjkSa6/MrqUu",
"__v" : 0
}
我是 mongodb + mongoose 的新手,所以我知道这是一个愚蠢的问题,但我就是不知道哪里出了问题...我还创建了一个 findSellerById()
函数,而且它工作得很好。
编辑 1:
使用 Mongoose 调试,这是打印的内容:
Mongoose: sellers.findOne({ email: 'email@email.email' }) { fields: undefined }
Mongoose: sellers.findOne({}) { fields: undefined }
如你所见,也尝试过不带参数,没有成功...
我遇到了同样的问题,也许你可以试试这个:
Seller.find({email: seller.email}, function(err, seller){
console.log(seller);
});
这解决了我的问题,希望它也能解决你的问题!
传递给 findOne
的回调函数有两个参数(error 和 doc),因此您将 seller
视为错误参数而不是 doc 参数。
因此您的函数应该如下所示:
getSellerByEmail : function(email,next){
var Seller = mongoose.model('Seller');
console.log(inspect(email));
Seller.findOne({'email' : new RegExp(email, 'i')}, function(err, seller){
next(seller);
});
}