Javascript 猫鼬没有回来,但猫鼬壳已经回来了

Javascript 猫鼬没有回来,但猫鼬壳已经回来了,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我在我的节点应用程序上使用mongoose,我想通过其电子邮件获得卖家: getSellerByEmail : function(email,next){ var Seller = mongoose.model('Seller'); console.log(inspect(email)); Seller.findOne({'email' : new RegExp(email, 'i')}, function(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不会返回新用户。但是,当我尝试使用相同的电子邮件创建另一个用户时,服务器会正确执行此函数并返回新用户

还尝试了
{'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+猫鼬的新手,所以我知道这是一个愚蠢的问题,但我就是不知道怎么回事。。。我还创建了一个
findSellerById()
函数,它工作得非常好

编辑1:

使用Mongoose debug,打印内容如下:

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

这解决了我的问题,希望它也能解决你的问题

我也有同样的问题,也许你可以试试这个:

Seller.find({email: seller.email}, function(err, seller){
    console.log(seller);
});

这解决了我的问题,希望它也能解决你的问题

我也有同样的问题,也许你可以试试这个:

Seller.find({email: seller.email}, function(err, seller){
    console.log(seller);
});

这解决了我的问题,希望它也能解决你的问题

我也有同样的问题,也许你可以试试这个:

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

传入
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);
    });
}

传入
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);
    });
}

传入
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.set('debug',true)上检查了它们@KayanAlmeida你具体尝试了什么?关键的一点是
find
findOne
回调都使用两个参数,而不是一个。@johnyhk我用mongoose调试输出编辑了我的答案,但正如我前面所说的,这个
findOne
在之前被调用,以检查电子邮件的唯一性,并且工作正常。这是同样的功能,同样的输入。可能是连接问题?已经试过了,没有成功。我注意到另一件事,当卖家想要注册时,这个函数也会被调用,所以我调用它来检查电子邮件是否已经在数据库中,并且它可以工作!它返回正确!真的,我不知道为什么登录时没有。两个查询完全相同。。我在
mongoose.set('debug',true)上检查了它们@KayanAlmeida你具体尝试了什么?关键的一点是
find
findOne
回调都使用两个参数,而不是一个。@johnyhk我用mongoose调试输出编辑了我的答案,但正如我前面所说的,这个
findOne
在之前被调用,以检查电子邮件的唯一性,并且工作正常。这是同样的功能,同样的输入。可能是连接问题?已经试过了,没有成功。我注意到另一件事,当卖家想要注册时,这个函数也会被调用,所以我调用它来检查电子邮件是否已经在数据库中,并且它可以工作!它返回正确!真的,我不知道为什么登录时没有。两个查询完全相同。。我在
mongoose.set('debug',true)上检查了它们@KayanAlmeida你具体尝试了什么?关键的一点是
find
findOne
回调都使用两个参数,而不是一个。@johnyhk我用mongoose调试输出编辑了我的答案,但正如我前面所说的,这个
findOne
在之前被调用,以检查电子邮件的唯一性,并且工作正常。这是同样的功能,同样的输入。可能是连接问题?已经试过了,没有成功。我注意到另一件事,当卖家想要注册时,这个函数也会被调用,所以我调用它来检查电子邮件是否已经在数据库中,并且它可以工作!它返回正确!真的,我不知道为什么登录时没有。两个查询完全相同。。我在
mongoose.set('debug',true)上检查了它们@KayanAlmeida你具体尝试了什么?关键的一点是
find
findOne
回调都使用两个参数,而不是一个。@johnyhk我用mongoose调试输出编辑了我的答案,但正如我前面所说的,这个
findOne
在之前被调用,以检查电子邮件的唯一性,并且工作正常。这是同样的功能,同样的输入。可能是连接问题?它正在工作,非常感谢!但是你知道为什么它以前会起作用吗?我不能说,但这绝对是正确的方法。:)它起作用了,非常感谢!但是你知道为什么它以前会起作用吗?我不能说,但这绝对是正确的方法。:)它起作用了,非常感谢!但是你知道为什么它以前会起作用吗?我不能说,但这绝对是正确的方法。:)它起作用了,非常感谢!但是你知道为什么它以前会起作用吗?我不能说,但这绝对是正确的方法。:)