【问题标题】:how to handle multiple parameters in express routes如何处理快速路线中的多个参数
【发布时间】:2019-09-30 05:50:23
【问题描述】:

我正在开发一个使用 express 和路由来处理 http 请求的网站。

我正在使用把手填充我的 html div 元素:

<div class="popup center" style="height: 15em;">
    <h3 name="name" id="name">{{ active_name }}</h3>
    <p name="description" id='description'>{{ active_desc }}</p>
</div>

现在我让用户使用 contenteditable="true" 修改这些元素。

我想通过一个按钮调用一个传递所有已修改字段的路由。

目前我只能传递一个元素(即 {{session.recipe}},它是配方的 ID),但我也想处理修改后的名称和描述。

<a href="/save-recipe/{{session.recipe}}" style="color: black;">
  <button name="button" class="greyishBackground width45 right">
      <p>Save</p>
  </button>
</a>

在 index.js 中我正在这样做:

router.get('/save-recipe/:id/', function(req, res, next) {
    var recipe_id = req.params.id; 

    console.log(req.body.name); // doesn't work - undefined
}

由于 req.body.name 不起作用(未定义),我正在尝试找到一种方法将更多参数传递给路由,以便以与处理 recipe_id 相同的方式处理它们(即 req. params.id)。

有人能解释一下怎么做吗? 我可以创建一个带有名称和描述字段的对象并只传递该对象吗?我该怎么做?

或者有办法让 req.body.name 工作?

【问题讨论】:

    标签: javascript express routing handlebars.js


    【解决方案1】:
    router.get('/save-recipe/:id/:name/:desc', function(req, res, next) {
    var recipe_id = req.params.id; 
    var recipe_name = req.params.name;
    var recipe_name = req.params.desc;
    }
    

    req.body.name 未定义,因为您没有向服务器发布任何内容。

    【讨论】:

    • 谢谢!在href中我需要如何传递元素?我的意思是,我如何获取例如名称内容并将其传递到 url?
    • 由于我现在使用 2 个参数,但我想添加更多参数,有没有办法创建一个对象并只传递对象(包含所有参数)?
    • 这个链接对stackoverflow.com/questions/27873573/…有帮助吗?
    • 我建议您发出一个 post 请求,并将您需要保存为有效负载的详细信息传递给 http post 请求
    • 我不想使用表单,因为我无法像现在加载页面时那样填充其输入字段。我已经尝试过使用表单并且它可以工作,但由于上述原因,我更愿意避免这种方式
    猜你喜欢
    • 2020-02-20
    • 2018-09-10
    • 1970-01-01
    • 1970-01-01
    • 2019-09-07
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多