Angularjs strongloop自定义方法

时间:2015-09-24 21:56:19

标签: angularjs loopbackjs strongloop

我在我的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);

你知道为什么这个方法没有用参数调用地址吗?

2 个答案:

答案 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,
  ...  
}