Nodejs:没有类型声明的路由

Nodejs: Routing without type declaration

我正在使用 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 可用?

如果你有任何我在问题中遗漏的问题,或者如果你能帮助我,请评论或回复。

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

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