在html中设置URL的参数,并在Node.js Express中使用参数进行路由

时间:2017-03-12 10:35:22

标签: node.js mongodb express

我非常了解Node JS和Express Framework& MongoDB的。我正在一个有多个类别的网站上工作,当我们点击类别时,它会进入一个视图,根据点击的类别,数据会被加载到视图中。

请查看网站here的链接。

我正在寻找导航栏链接的帮助,例如。蒙特梭利高级 - >幼儿材料

由于这些是静态链接,我无法想象如何为此传递任何参数或url格式。

我已经为各个产品做了路由,因为他们有来自数据库的id,所以我在url中使用了这个id。

提前致谢。

2 个答案:

答案 0 :(得分:1)

在我看来,您只是在前端和后端数据库调用之间缺少一些粘合剂。这里概述了您可能会遵循的顺序,以及对我认为您缺失的内容的解释。

如果我错了,请添加评论并更新您的问题以包含新的详细信息,并且我会看到有关编辑我的答案的信息。

在这个示例中,我创建了一个网站,其中包含"项目列表"在商店里,我们希望将它们全部显示在一个页面上。然后,每个项目都应该有一个点击该特定项目的href,其中可能有更多细节,例如"完整描述"该项目,也许是一些图像或东西。我们将查看使用项目列表构建第一页的流程。

  1. 用户对您网站的根目录进行HTTP GET调用,例如" http://www.mystore.com/"。
  2. 此请求通过Express传递给您的控制器,该控制器接收req, res, next个参数。
  3. 您的控制器会调用数据库以获取所有项目的列表,包括其名称和ID。
  4. 然后使用名为模板的东西注入项目列表。
  5. 在此模板中,您可以通过列表迭代执行此类操作。
  6. <ul>
        {{#each items}}
            <li><a href="/items/{{id}}>{{name}}</a></li>
        {{/each}}
    </ul>
    

    在这个模板(恰好是Handlebars)中,我们通过项目列表并使用每个项目的ID和名称将它们注入到HTML中以获得类似于此的内容。

    <ul>
        <li><a href="/items/1>Shoes</a></li>
        <li><a href="/items/2>Red spotted dress</a></li>
        <li><a href="/items/3>Jeans</a></li>
    </ul>
    
    1. 一旦处理完模板,就会将其提供给用户。
    2. 从本质上讲,我认为你是在某种模板引擎之后,我强烈建议你看一下express-hbs之类的Handlebars。

答案 1 :(得分:0)

感谢@Elliot的时间回答这个问题。是的我正在使用把手进行模板化。我找到的解决方案是,因为我使用静态链接,我在锚标记链接中传递查询字符串。 例如。 http://localhost:8000/product?category=Toddler_Material 然后使用req.query捕获路由器中的值(Toddler_Material)

var category = req.query.category;