loopbackjs - findById需要id参数

时间:2017-03-05 03:08:36

标签: mysql node.js loopbackjs

我是loopback的新手,我正在尝试使用findyById方法在loopback中创建一个简单的远程方法。花了几个小时在这上面仍然无法让它发挥作用。这是我的代码:

customer.js:

    Customer.list = function(customerId, cb){
       app.models.Customer.findById(customerId, function (err, instance) {
          cb(null, err || 'success');
          if(err){
             console.log(err);
          }else if(instance){
             console.log(instance);
          }
       });
    }

    // expose the above method through the REST
   Customer.remoteMethod('list', {
       returns: {
          arg: 'list',
          type: 'string'
       },
       accepts: {arg: 'id', type: 'number', http: { source: 'query' } },
       http: {
          path: '/list',
          verb: 'get'
       }
   });

customer.controller.js:

    Customer.list(1)
            .$promise
            .then(function(response){
                console.log(response);
            })
            .catch(function(err){
                console.log(err);
            });

我在mysql中的客户行:

id:1 number:10

我收到此错误:

    Error: Model::findById requires the id argument
    at Desktop\SampleProject\node_modules\loopback-datasource-juggler\lib\dao.js:1287:10
    at _combinedTickCallback (internal/process/next_tick.js:67:7)
    at process._tickCallback (internal/process/next_tick.js:98:9)

您能否告诉我可能的原因/为什么我会收到此错误? 请帮我。谢谢

1 个答案:

答案 0 :(得分:1)

使用get动词,没有正文。

您需要更改远程方法,如下所示:

 accepts: {arg: 'id', type: 'number', http: { source: 'path' } },
       http: {
          path: '/list/:id',
          verb: 'get'
       }