我在我的strongloop应用程序中定义了一个自定义方法,当我通过Api资源管理器测试它时返回正确的数据。 然后我通过" lb-ng"生成了一个angularjs服务。 当我使用此自定义方法通过角度发送请求时,我收到此错误:
Error in resource configuration for action `list`. Expected response to contain an object but got an array (Request: GET http://**myip**/api/Questions)
事情是它应该调用这个地址:
http://**myip**/api/Questions/4/0
在使用lb-ng
重新生成角度服务之前,它曾经在某个时刻工作以下是strongloop中的方法注册:
Question.remoteMethod(
'list', {
http: {path: '/:lang/:start/', verb: 'get'},
accepts: [
{arg: 'lang', type: 'number'},
{arg: 'start', type: 'number'}
],
returns: {arg: 'questions', type: 'array'},
description: ['Returns an array obj the latest added questions filters by language and categories']
}
)
这是我homeController中的角度调用测试:
function getQuestions(langId, start) {
Question.list(langId, start)
.$promise
.then(function(questionsList) {
$scope.questions = questionsList.questions;
}
);
}
getQuestions(4, 0);
你知道为什么这个方法没有用参数调用地址吗?
答案 0 :(得分:0)
我很确定请求参数需要在一个对象上(根据REST API使用浏览器),如下所示:
Question.list({lang:langId, start: start}).$promise.then(...)
我还建议使用角度SDK generating the docular docs,因为这些有助于澄清事情。
答案 1 :(得分:0)
在生成的服务文件中查找 list 方法并将isArray
参数添加/设置为true
,它应该是这样的:
"list": {
...
isArray: true,
...
}