我正在使用MEAN堆栈,我对$资源如何工作有点困惑。我知道$ resource工厂是一个检索控制器数据的服务。但是,我有两个模型对象,Compositions和Critiques。我想要做的是根据网址获得批评,看起来像这样:/ composition /:compositionId / review。
出于某种原因我打电话
Reviews.query(function(review) {
console.log(review);
$scope.reviews= review;
});
我收到此错误:
GET localhost:3000/compositions/review 500 (Internal Server Error)
以下是我的服务:
angular.module('mean').factory('Reviews', ['$resource',
function($resource) {
return $resource('compositions/:docId/review', {
docId: '@docId'
},
{
update: {
method: 'PUT'
}
});
}
]);
angular.module('mean').factory('Compositions', ['$resource',
function($resource) {
return $resource('compositions/:compositionId', {
compositionId: '@_id'
},
{
update: {
method: 'PUT'
}
});
}
]);
如果我导航到/ composition /:compId,第二个可以工作,但第一个没有。相反,我得到上面的错误。为什么没有传递docId?有任何想法吗? 我想要的是compositionId,它是评论中的docId'对象模型术语,但我想找回批评对象。我究竟做错了什么?感谢任何帮助或建议,谢谢!
答案 0 :(得分:1)
您正在将回调传递给query()
- 这是错误的。你应该用docId传递一个params对象。这就是你应该这样做的(在Angular 1.2中)
Reviews.query({docId: 5}).$promise.then(function(review) {
console.log(review);
});