我是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)
您能否告诉我可能的原因/为什么我会收到此错误? 请帮我。谢谢
答案 0 :(得分:1)
使用get
动词,没有正文。
您需要更改远程方法,如下所示:
accepts: {arg: 'id', type: 'number', http: { source: 'path' } },
http: {
path: '/list/:id',
verb: 'get'
}