簡體   English   中英

在Mongodb數據庫中搜索用戶

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM