【问题标题】:Nodejs: Routing without type declarationNodejs:没有类型声明的路由
【发布时间】:2019-06-30 05:38:01
【问题描述】:

我正在使用 koa 创建路由器。我们已经声明了两个路由器,如下所示。

app.get('/order/:id', async ctx => {
  const { id } = ctx.params;
  try {
    const data = await order.findOne({
      where: { order_id: id }
    });
    ctx.body = data;
  } catch (e) {
    ctx.body = e.message;
  }
});

app.get('/order/customer', async ctx => {
  const { id } = ctx.request.user;
  try {
    const data = await order.findOne({
      where: { customer_id: id }
    });
    ctx.body = data;
  } catch (e) {
    ctx.body = e.message;
  }
});

第一个是通过order_id选择订单的查询,第二个是通过中间件认证的id选择用户订单的查询。

curl http://localhost:3000/order/1

当我在上面输入时,order_id 为 1。

curl http://localhost:3000/order/customer

但是,与我的意图不同,当我输入上述内容并检查查询时,order_id 称为customer。有什么方法可以让 url 变得简单,让/order/customer 可用?

如果您有任何我在问题中遗漏的问题,或者您可以帮助我,请发表评论或回复。

【问题讨论】:

  • 切换路由的顺序。更具体的应该在更一般的之前。

标签: javascript node.js routes koa


【解决方案1】:

您遇到了路线定义顺序的问题。您应该先有特定的路径路由,然后再有动态路由。在这里,我指的是/:id的动态路线:

'/order/customer' // first
'/order/:id' // later

【讨论】:

  • 这很简单。谢谢你的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多