[英]Searching Users in Mongodb Database
我正在使用mongdb,并且有一个用户数据库。 我想允许用户根据用户名在数据库中搜索其他用户。 到目前为止,我已经尝试过并且没有运气实现这一目标。
这是我的前端HTML:
<h1>Search Users</h1>
<form class="form-inline" method="POST" action="/users/search">
<div class="form-group">
<input type="text" name="user_query" class="form-control" placeholder="Find Users By Username...">
</div>
<button type="submit" class="btn btn-primary">Search</button>
</form>
还有我在app.js中的服务器端代码:
// Seach Page
app.get('/', function(req, res, next){
res.render('searchusers');
});
// Search Processing
app.post('/users/search', function(req, res, next){
var query = req.body.user_query;
var result = db.users.findOne({"username":"user_query"})
console.log('Searched for user: '+result);
});
我在存储用户的数据库中的集合称为“用户”。 每当我调用db.users.findOne({"username":user_query})
,提交如下所示的表单后都会收到错误消息:
TypeError: Cannot read property 'findOne' of undefined
at /Users/joshuablew/Desktop/MobiusApp/app.js:86:24
at Layer.handle [as handle_request] (/Users/joshuablew/Desktop/MobiusApp/node_modules/express/lib/router/layer.js:95:5)
at next (/Users/joshuablew/Desktop/MobiusApp/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/Users/joshuablew/Desktop/MobiusApp/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/Users/joshuablew/Desktop/MobiusApp/node_modules/express/lib/router/layer.js:95:5)
at /Users/joshuablew/Desktop/MobiusApp/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/Users/joshuablew/Desktop/MobiusApp/node_modules/express/lib/router/index.js:335:12)
at next (/Users/joshuablew/Desktop/MobiusApp/node_modules/express/lib/router/index.js:275:10)
at /Users/joshuablew/Desktop/MobiusApp/app.js:74:3
at Layer.handle [as handle_request] (/Users/joshuablew/Desktop/MobiusApp/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/Users/joshuablew/Desktop/MobiusApp/node_modules/express/lib/router/index.js:317:13)
at /Users/joshuablew/Desktop/MobiusApp/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/Users/joshuablew/Desktop/MobiusApp/node_modules/express/lib/router/index.js:335:12)
at next (/Users/joshuablew/Desktop/MobiusApp/node_modules/express/lib/router/index.js:275:10)
at /Users/joshuablew/Desktop/MobiusApp/node_modules/connect-flash/lib/flash.js:21:5
at Layer.handle [as handle_request] (/Users/joshuablew/Desktop/MobiusApp/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/Users/joshuablew/Desktop/MobiusApp/node_modules/express/lib/router/index.js:317:13)
at /Users/joshuablew/Desktop/MobiusApp/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/Users/joshuablew/Desktop/MobiusApp/node_modules/express/lib/router/index.js:335:12)
at next (/Users/joshuablew/Desktop/MobiusApp/node_modules/express/lib/router/index.js:275:10)
at /Users/joshuablew/Desktop/MobiusApp/node_modules/express-validator/lib/express_validator.js:355:5
at Layer.handle [as handle_request] (/Users/joshuablew/Desktop/MobiusApp/node_modules/express/lib/router/layer.js:95:5)
我可以做些什么,以便用户搜索表单中的用户名时,结果将显示在网页上? 谢谢。
您应该首先建立与MongoDB的连接。 您可以在此处找到示例指南。
在findOne
函数中,找到用户名为“ user_query”的文档。 您必须用适当的名称代替适当的结果。
作为建议,您应该使用例如user_name
而不是user_query
以获得更易读的代码。
假设数据库连接已成功建立,可以通过mongo shell检查集合是否存在吗?
外壳程序中一个简单的“ db.users.find()”或“显示集合”将向您显示用户集合是否存在。 如果不是,则需要通过db.createCollection(“ users”)创建集合。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.