/ / Параметри маршруту не надсилаються в ExpressJS API - javascript, angularjs, express, мангуст

Параметри маршруту не надсилаються на ExpressJS API - javascript, angularjs, express, мангуст

Я чухаю голову про це.

Я запускаю сайт expressjs з angularjs якмій інтерфейсний ресурс, і моя проблема полягає в тому, що я налаштував свій API на запит до мого сховища даних за допомогою параметризованого запиту. Коли я потрапляю на маршрут, параметр не відображається в моєму запиті ресурсу angularjs, тому в підсумку я просто отримую весь набір даних замість одного об’єкта за ідентифікатором.

/api/index.js:

var _getSingleRequest = function(req, res, next)
{
models.Request
.findOne({"_id": req.body.id})
.exec(function(err, request){
if(err) return res.send(500, err);
if(!request) return res.send(404, new Error("Request not found"));

res.send(request);
});
};
...
return {
_getSingleRequest: getSingleRequest
}

/server.js

...
var api = require("./api");
app.get("/api/request/:id", api.getSingleRequest);
...

/public/js/controllers/controller.js

...
function Request($scope, $resource, $routeParams, Request)
{
$scope.request = Request.query({_id : $routeParams.id});
...
}
...

/public/js/services/services.js

services.Request = function($resource)
{
return $resource("/api/request/:id", {id:"@id"}, {"get": {method:"GET", isArray: true}});
}

консоль

Mongoose: requests.find({}) { fields: undefined, safe: undefined, sort: [ [ "requestedDate", 1 ] ] }
GET /api/request?_id=51b8cc2a06859bd418000001 304 179ms

здається, що запит на отримання надходить належним чином, але в запиті Mongoose параметри не передаються.

яку просту помилку я роблю, і яку іншу інформацію я можу розмістити, щоб допомогти мені зрозуміти, як вийти з нескінченної петлі, що стукає головою об стіну?

Відповіді:

0 для відповіді № 1

У твоїй Request функцію, ви проходите _id:

Request.query({_id : $routeParams.id});
^^^

Але у вашій службі ви очікуєте id:

$resource("/api/request/:id", {id:"@id"}
^^^

Це генеруватиме запити, що виглядатимуть так (про що також пише ваш журнал):

/api/request/?_id=XXX

Але ваш сервер очікує цього:

/api/request/XXX

0 для відповіді № 2

req.body.id призначений для тіла запиту, а не параметрів маршруту, які походять з URI запиту. Ти хочеш req.params.id