gpt4 book ai didi

javascript - 如何使用 Express、Mongoskin 和 Node.js 查找 mongoDB 对象

转载 作者:行者123 更新时间:2023-12-03 11:04:46 26 4
gpt4 key购买 nike

我试图通过询问用户的凭据来创建登录页面,然后尝试在 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 请求。未查找的请求将返回集合中的所有用户,我可以搜索返回的数组,但对于数百个用户的情况,这似乎不是最佳选择。如何使用 Express 路由和 Mongoskin 正确发出 GET 请求?

谢谢。

最佳答案

您应该使用 findOne 方法,并使用 name="username"传递输入值,它们使用 req.param("username"); 访问您的路由中的值。

使用此代码:

Jade :

  #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

在你的 route :

  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);
}
});
});

此外,此代码将保护您的敏感数据。

关于javascript - 如何使用 Express、Mongoskin 和 Node.js 查找 mongoDB 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27913929/

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