gpt4 book ai didi

node.js - MongoDB:findOne 返回 null 但文档存在于集合中

转载 作者:可可西里 更新时间:2023-11-01 09:56:19 24 4
gpt4 key购买 nike

我正在尝试在服务器端发送电子邮件和密码并检查是否存在具有这些值的文档(确实存在),但是当我控制台记录查询中的 results 时,它为空.

这是 users 集合中的文档:

{
"_id" : ObjectId("580bcf9874ae28934705c0fc"),
"email" : "johndoe@gmail.com",
"password" : "pass"
}

这是我在服务器端发送的内容:

{"email":"johndoe@gmail.com","password":"pass"}

这是我的代码(已更新):

mongo.connect('mongodb://localhost:27017', function (err, db) {

if (err) {
console.log("error: " + err); // logs nothing
} else {

var users = db.collection("users");
var tasks = db.collection("tasks");

app.post("/login", function(req, res) {

var emailRegex = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
var userInDb;
var userEmail = req.body.email;
var userPassword = req.body.password;

console.log(req.body.email); // logs "johndoe@gmail.com"
console.log(req.body.password); // logs "pass"

if (!userEmail || !userPassword) {
return res.sendStatus(403);
} else if ( !emailRegex.test(userEmail)) {
return res.sendStatus(403);
} else {

users.findOne( { "email": userEmail, "password": userPassword }, function(err, results) {

console.log(results); // logs "null"

if(err) {
console.log("error: " + err); // logs nothing
res.sendStatus(403);
} else {
console.log("here"); // logs "here"
res.sendStatus(200);
}

});
}
});
}
});

最佳答案

每次传递带有错误参数的回调时,您有责任检查是否传递了错误,如果是,则进行处理。

在您的代码中,您有两个这样的回调:

mongo.connect('mongodb://localhost:27017', function (err, db)
users.findOne( { "email": userEmail, "password": userPassword }, function(err, results)

它们中的任何一个都可以返回一个可能解释问题的错误对象。将以下内容添加到每个回调的第一行:

if (err) {
return console.log("error: " + err);
}

关于node.js - MongoDB:findOne 返回 null 但文档存在于集合中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40353972/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com