我有一个简单的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}}回调。
任何帮助都将不胜感激。
答案 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
});