我正在尝试获取列名值或多个列名值,但我没有获得它。我是Nodejs的新手,但调试它甚至很难。这是我的代码:
var express = require('express');
var app = express();
var mongodb = require('mongodb');
var MongoClient = mongodb.MongoClient;
MongoClient.connect(url, function (err, db) {
if (err) {
console.log('Unable to connect', err);
} else {
console.log('Connected');
var collection = db.collection('users');
app.get('/db', function (request, response) {
collection.find({username: request.query.username, password: request.query.password}).toArray(function(err, docs) {
docs.forEach(function(doc) {
console.log(doc.toArray());
});
});
});
}
db.close();
});
我基本上验证在db中输入的用户名和密码是否与我的REST查询匹配,如果是,则打印成功或重定向到新页面等。
答案 0 :(得分:0)
对于初学者来说,除非你实际上期待不止一个用户"分享相同的"用户名"和#34;密码"那么你最好使用.findOne()
进行单数响应。
然后返回的只是一个普通的JavaScript对象,所以只需引用属性:
collection.findOne(
{
username: request.query.username,
password: request.query.password
},
function(err,doc) {
if (err) throw err;
console.log( doc.username ); // Just the username value
}
);
如果当然是"什么都不是"返回并且没有"错误"然后你没有用你的标准匹配任何东西,所以要么"用户名"或"密码"是错的。
这是基本的练习,但实际上,身份验证是很久以前构建的一个轮子,您可能更好地实现现有模块来处理它。
摆脱db.close()
。这里的函数是异步的,这将在其他任何事情完成之前执行。你基本上不想在现实世界的应用程序中调用它。