路由参数没有被发送到ExpressJS API
Route params not getting sent to ExpressJS API
我很挠头
我正在运行一个expressjs网站与angularjs作为我的前端资源,我的问题是,我已经设置了我的API查询我的数据存储参数化查询。当我点击路由时,参数没有出现在我的angularjs资源查询中,所以我最终只获得了整个数据集,而不是通过id获得一个对象。
/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);
...
/公共/js/控制器/controller.js
...
function Request($scope, $resource, $routeParams, Request)
{
$scope.request = Request.query({_id : $routeParams.id});
...
}
...
/公共/js/服务/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
看起来get请求是正确通过的,但是在Mongoose查询中没有传递参数。
我犯了什么简单的错误,我可以发布哪些其他信息来帮助我弄清楚如何摆脱我的头撞到墙上的无限循环?
在您的Request
函数中,您正在传递_id
:
Request.query({_id : $routeParams.id});
^^^
但在您的服务中,您期待id
:
$resource('/api/request/:id', {id:'@id'}
^^^
这将生成如下请求(这也是您的日志所显示的):
/api/request/?_id=XXX
但是你的后端期望这个:
/api/request/XXX
req.body.id
用于请求体,而不是来自请求URI的路由参数。你想要req.params.id
相关文章:
- 无法导出函数expressjs/requestjs中的变量
- nodejs-expressjs上传图像并显示它们
- 如何更改bigquery API中的计费层选项
- Amazon S3 REST API大小不正确
- 客户端服务器REST API captcha实现
- 使用Facebook live API创建实时视频对象时的隐私设置
- 谷歌放置API:按国家或餐馆名称搜索餐馆
- MeteorJS:在带有回调的vzaar api上正确使用wrapAsync
- 是否可以控制获取哪些Google地图脚本(JavaScript API)
- API密钥使用和检查示例
- 谷歌地图API v3不适用于移动浏览器或PhoneGap
- 任何方式使AJAX调用Gmail API,而无需通过JS库
- 谷歌地图JS API+JSON-多个标记没有显示
- Nodejs/Expressjs 请求在访问 API 时返回 404
- API Expose (NodeJS/ExpressJS)
- NodeJS ExpressJS如何打印API结果数组
- 获取API时带有html5mode的ExpressJS无法工作
- 路由参数没有被发送到ExpressJS API
- 在API Client中公开Expressjs中间件
- 使用REST API在ExpressJS和AngularJS中上传文件