2017-12-18 107 views
2

我使用的mongodb與收集結構如下:快遞JS顯示數據通過ID

聊天機器人收集

{ 
    "_id" : ObjectId("5a2f8edf84b906480af0d121"), 
    "botname" : "Welcome Chat", 
    "description" : "Welcome Chat", 
    "status" : "Inactive" 
} 

route.js

app.get('/cpanel/chat-bot/:id', function(req, res) { 
     if (req.session.user == null) { 
      res.redirect('/cpanel/login'); 
     } else { 
      CB.getAllRecords().then(results => { 
      res.render('cpanel/chat-bot/:id', { udata : req.session.user, chatbot: results}); 
     }).catch(err => { 
       res.sendStatus(500); 
      }); 
     } 
    }); 

index.ejs

<ul class="menu-sidebar"> 
     <% for(var i = 0; i < chatbot.length; i++) { %> 
      <li> 
      <a href="/cpanel/chat-bot/:id"><span class="fa fa-circle-o"></span><%= chatbot[i].botname %></a> 
      </li> 
     <% } %> 
     </ul> 

如何顯示數據聊天bot通過id從mongodb?當我點擊url 1(/ cpanel/chat-bot/1)時,它會顯示來自mongodb的數據id 1,當我點擊url 2(/ cpanel/chat-bot/2)時,它會顯示來自mongodb的數據id 2?謝謝

回答

1

當您配置像

app.get('/cpanel/chat-bot/:id', ...) 

路由的路由的:id部分指出,要匹配的路徑的一部分的任何值,然後快速將放置任何被匹配到req.params.id。因此,如果要將該值用作數據庫查詢的一部分,則需要在數據庫查詢中使用req.params.id,以便僅從數據庫中選擇所需的數據。

另外,你不要在渲染路徑中使用:id所以從這裏將其刪除:

res.render('cpanel/chat-bot/:id', ...); 

這應該只是你的模板文件的路徑(無論模板的文件名是):

res.render('cpanel/chat-bot', ...); 

你不透露太多關於數據庫中的數據,以便我們能真正與你將如何使用req.params.id值幫助不選擇所需的DAT一個來自你的數據庫。我認爲你會在某種查詢中使用它。

+0

你能給我一個樣品嗎? –

+0

@ArifFirmansyah - 什麼樣的? – jfriend00

+0

如何使用適合我的情況的req.params.id的示例? –