如何使用 Express、Mongoskin 和 Node.js 查找 mongoDB 对象
How to find mongoDB Object with Express, Mongoskin, and Node.js
我正在尝试通过询问用户凭据然后尝试在 mongoDB 集合中找到该用户来创建登录页面。我无法从 mongoDB 获得单个对象 returned,而是整个用户列表。
html,使用 Jade 设置,如下所示:
//User Login Page
#login
h2 User Login
fieldset
input#inputUsername(type='text', placeholder='Username')
button#btnLogin Login
// /User Login
JavaScript 边看起来像这样:
//Request user credentials on button click
function loginRequest() {
var userCreds = {
'username': $('#login fieldset input#inputUsername').val()
};
$.getJSON('/users/loginRequest', userCreds, function (data) {
console.log(data);
});
}
使用 Express 和 Mongoskin,路由到此:
//GET Login User
router.get('/loginRequest', function (req, res) {
var db = req.db;
db.collection('authorizedUsers').find(req.body).toArray(function (err, items) {
res.json(items);
});
})
问题是我无法将特定的登录信息(用户名)正确传递给 GET 请求。非查找请求将 return 集合中的所有用户,我可以搜索 returned 数组,但对于数百个用户,这似乎不是最佳选择。如何使用 Express 路由和 Mongoskin 正确发出 GET 请求?
谢谢。
你应该使用 findOne 方法,并使用 name="username" 传递输入值,他们使用 req.param("username");
使用此代码:
玉:
#login
h2 User Login
form(role='form', method='get', action='/users/loginRequest')
input#inputUsername(name='username', type='text', placeholder='Username')
button#btnLogin(type='submit') Login
在你的路线中:
router.get('/loginRequest', function (req, res) {
var username = req.param("username");
db.collection('authorizedUsers').findOne(username: username}, function(err, items) {
if(err) {
return console.log('findOne error:', err);
}
else {
res.json(items);
}
});
});
此外,此代码将保护您的敏感数据。
我正在尝试通过询问用户凭据然后尝试在 mongoDB 集合中找到该用户来创建登录页面。我无法从 mongoDB 获得单个对象 returned,而是整个用户列表。
html,使用 Jade 设置,如下所示:
//User Login Page
#login
h2 User Login
fieldset
input#inputUsername(type='text', placeholder='Username')
button#btnLogin Login
// /User Login
JavaScript 边看起来像这样:
//Request user credentials on button click
function loginRequest() {
var userCreds = {
'username': $('#login fieldset input#inputUsername').val()
};
$.getJSON('/users/loginRequest', userCreds, function (data) {
console.log(data);
});
}
使用 Express 和 Mongoskin,路由到此:
//GET Login User
router.get('/loginRequest', function (req, res) {
var db = req.db;
db.collection('authorizedUsers').find(req.body).toArray(function (err, items) {
res.json(items);
});
})
问题是我无法将特定的登录信息(用户名)正确传递给 GET 请求。非查找请求将 return 集合中的所有用户,我可以搜索 returned 数组,但对于数百个用户,这似乎不是最佳选择。如何使用 Express 路由和 Mongoskin 正确发出 GET 请求?
谢谢。
你应该使用 findOne 方法,并使用 name="username" 传递输入值,他们使用 req.param("username");
使用此代码:
玉:
#login
h2 User Login
form(role='form', method='get', action='/users/loginRequest')
input#inputUsername(name='username', type='text', placeholder='Username')
button#btnLogin(type='submit') Login
在你的路线中:
router.get('/loginRequest', function (req, res) {
var username = req.param("username");
db.collection('authorizedUsers').findOne(username: username}, function(err, items) {
if(err) {
return console.log('findOne error:', err);
}
else {
res.json(items);
}
});
});
此外,此代码将保护您的敏感数据。