我是Node Express Mongo的新手,所以在按照一些教程后我想尝试重写我自己的婴儿网站。这是一个login
页面。其他人的代码对我有用,但是当我尝试它时,我的方式并不起作用。我也查阅了文档,他们做了db.bios.find( { _id: 5 } )
之类的东西,这是我试图模仿的东西
db为ShipDB
,集合为users
,我试图找到的文档是
{
"_id" : ObjectId("56edc18064e429581541808a"),
"username" : "username",
"password" : "password"
}
下面,我正在连接,如果result.length
,则重定向到主页。我已经尝试在网站上正确输入username
和password
,但它表示登录无效。 console.log(result.length)
打印出undefined?这是为什么?这是logcat:
Connection established successfully
undefined
{ username: 'username', password: 'password' }
router.post('/validate', function(req, res) {
var MongoClient = mongodb.MongoClient;
var url = "mongodb://localhost:27017/"+database_name;
MongoClient.connect(url, function(err, db) {
if(!err) {
console.log("Connection established successfully");
var user_collection = db.collection(collection_name_users);
var user_login_input = {
username: req.body.username,
password: req.body.password
};
// THIS IS THE FUNCTION THAT I HAVE A PROBLEM WITH!!!!
user_collection.find(
{
username: req.body.username,
password: req.body.password
}, function(err, result) {
if(!err) {
console.log(result.length);
if (result.length) {
// Successful login
req.session.user = result;
delete req.session.user.password;
res.redirect("home");
} else {
console.log(user_login_input);
res.send("Invalid login");
}
db.close();
} else {
console.log(err);
}
});
} else {
console.log("Cannot connect ", err);
}
});
});
我尝试的事情:
user_collection.find(user_login_input, function(err, result) {...
user_collection.find({ "username": req.body.username, "password": req.body.password })...
适用于mongoshell:
感谢您的时间。
编辑:findOne看起来已被弃用
答案 0 :(得分:1)
我认为node.js与mongo shell的结果相同,但result
不是数组,而result.length
是undefined
。您可以做的是先检查result
是数组还是对象。
第console.log(user_login_input);
行给出了正确的输出{ username: 'username', password: 'password' }
。