首页 > 解决方案 > MongoDB、Nodejs 路由顺序

问题描述

我的路线有问题。它们起作用,但只有代码中的那个起作用。下面的代码允许我通过 ID 而非注册号获得票。如果我将第二条路线放在第一条路线之上,反之亦然。

我能做些什么来解决这个问题?

//Get a ticket by ID

app.get('/tickets/:_id', function(req, res){
    Ticket.getTicketById(req.params._id, function(err, ticket){
        if(err){
            throw err;
        }
        res.json(ticket);
    });
});

//Get a ticket by registration number

app.get('/tickets/:vehRegistration', function(req, res){
    Ticket.getTicketByReg(req.params.vehRegistration, function(err, ticket){
        if(err){
            throw err;
        }
        res.json(ticket);
    });
});

标签: mongodbmongoose

解决方案


您已经编写了两次相同的 API 路径。:param_name 不能用于区分两个不同的路径。尝试

//Get a ticket by ID

app.get('/tickets/byid/:_id', function(req, res) {
    Ticket.getTicketById(req.params._id, function(err, ticket) {
        if (err) {
            throw err;
        }
        res.json(ticket);
    });
});

//Get a ticket by registration number

app.get('/tickets/byreg/:vehRegistration', function(req, res) {
    Ticket.getTicketByReg(req.params.vehRegistration, function(err, ticket) {
        if (err) {
            throw err;
        }
        res.json(ticket);
    });
});

推荐阅读