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