我使用具有集合结构的mongodb如下:
chatbot collection
{
"_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>
如何通过mongodb中的id显示数据聊天机器人?当我点击url 1(/ cpanel / chat-bot / 1)时,它将显示来自mongodb的数据id 1,当我点击url 2(/ cpanel / chat-bot / 2)时,它将显示来自mongodb的数据id 2?谢谢
答案 0 :(得分:1)
配置
之类的路线时app.get('/cpanel/chat-bot/:id', ...)
路由的:id
部分表示您希望匹配路径中该部分的任何值,然后Express会将匹配的内容放入req.params.id
。因此,如果要将id
值用作数据库查询的一部分,则需要在数据库查询中使用req.params.id
,以便仅从数据库中选择所需的数据。
此外,您不在渲染路径中使用:id
,因此请从此处删除它:
res.render('cpanel/chat-bot/:id', ...);
这应该是模板文件的路径(无论模板的文件名是什么):
res.render('cpanel/chat-bot', ...);
您不会在数据库中披露您的数据,因此我们无法真正帮助您使用req.params.id
值从数据库中选择所需的数据。我认为你会在某种查询中使用它。