快递JS显示数据按ID

时间:2017-12-18 01:16:19

标签: node.js mongodb express

我使用具有集合结构的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?谢谢

1 个答案:

答案 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值从数据库中选择所需的数据。我认为你会在某种查询中使用它。