我在我的节点应用上使用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不会返回新用户。但是当我尝试使用相同的电子邮件创建另一个用户时,服务器正确执行此功能并返回新用户。
还尝试使用{'email' : email}
并返回null
,但是当我在mongo shell上执行此查询时,它会正确返回。
db.sellers.findOne({email : 'email@email.email'});
{
"_id" : ObjectId("54b94759b042bdbf19cb7b97"),
"name" : "Nome da Empresa",
"cnpj" : "123123123",
"email" : "email@email.email",
"password" : "$2a$08$6UvW8Bux3CwUMok8ac12Sehbd.xCHnVUI51ZwhtGKBjkSa6/MrqUu",
"__v" : 0
}
我是mongodb + mongoose的新手,所以我知道这是一个愚蠢的问题,但我不能意识到什么是错的......我还创造了一个{{ 1}}功能,它完美地运作。
编辑1:
使用Mongoose调试,这是它打印的内容:
findSellerById()
正如你所看到的,也试过没有参数,没有成功......
答案 0 :(得分:2)
我有同样的问题,也许你可以试试这个:
Seller.find({email: seller.email}, function(err, seller){
console.log(seller);
});
这解决了我的希望,希望它也能解决你的问题!
答案 1 :(得分:1)
传递给findOne
的回调函数有两个参数(错误和文档),因此您将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);
});
}