expressjs控制器路由问题

时间:2018-04-02 12:04:57

标签: typescript express

我有一个简单的ExpressJS应用程序,我有一个问题,我无法获得扩展的路由被识别,一个例子可以在下面找到。

初​​始化

let carRouter = Router();
carRouter.get("/", carController.all);
carRouter.get("/:id", carController.one);
carRouter.get("/:id/state", carController.state);

ROUTER

// Car is imported as a Mongoose Schema

export let all = (request: Request, response: Response): void => {
    Car.find().then((data) => {
        response.status(200).json({ data });
    }).catch((error) => {
        response.status(500).json({ error });
    });
};

export let one = (request: Request, response: Response): void => {
    Car.find(request.params.id).then((data) => {
        response.status(200).json({ data });
     }).catch((error) => {
        response.status(500).json({ error });
    });
};

export let state = (request: Request, response: Response): void => {
    Car.find(request.params.id).then((data) => {
        response.status(200).json({ data });
    }).catch((error) => {
        response.status(500).json({ error });
    });
};

在我的控制器中,我使用Mongoose库链接到MongoDB。

CONTROLLER

/:id/state

我无法使state通话工作。它不会调用carController的指定{{1}}回调。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

问题在于未正确设置mongoose查询。我应该使用以下内容:

let id = request.params.id;
let query = Car.where({ "_id": id});
query.findOne().then((data) => {
    response.status(200).json(data);
}).catch((error) => {
    // do something with error
});