如何使用 Express、Mongoskin 和 Node.js 查找 mongoDB 对象
How to find mongoDB Object with Express, Mongoskin, and Node.js
我正在尝试通过询问用户的凭据然后尝试在mongoDB集合中找到该用户来创建登录页面。我无法从mongoDB返回单个对象,而是整个用户列表。
使用 Jade 设置的 html 如下所示:
//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 请求。非查找请求将返回集合中的所有用户,我可以搜索返回的数组,但在数百个用户的情况下,这似乎不是最佳选择。如何使用快速路由和 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);
}
});
});
此外,此代码将保护您的敏感数据。
相关文章:
- 使用JS查找数组的平均值
- 带嵌套json的下划线js查找
- Mongodb/JS:查找最短(最早)日期
- Node.js-查找http服务器正在侦听的端口
- 原型JS查找跨度并替换文本
- 带有普通对象的Ember.js查找不起作用
- Three.js-查找鼠标最后位置和当前位置之间的所有交点
- 使用jquery或JS查找文本区域内的所有单词位置
- 使用 Javascript/React.js 查找对象的数组索引
- 如何使用 Express、Mongoskin 和 Node.js 查找 mongoDB 对象
- 如何跟随猫鼬中的_id.js查找物品并对其进行处理
- 下划线.js:查找数组中出现频率最高的值
- 使用 JS 查找和替换文档中的特定文本字符
- underline-js-查找嵌套对象
- Node JS查找所有元素's属性
- 使用underscore.js查找基于对偶属性的唯一值
- 使用JS查找嵌套元素的HTML ID
- 使用moment.js查找当前财政季度的第一个日期
- 使用Angular.js查找正在进行的http get请求的下载状态
- js查找具有另一个属性的xml属性