LoopBack远程方法和对模型数据的访问

时间:2015-01-27 19:16:22

标签: node.js loopbackjs

我已经在这方面工作了好几个小时而且我完全迷失了,因为环回文档没有帮助。

我试图将应用程序逻辑编写到模型中。该文档是here。遗憾的是,除了将外部值传递给远程方法并再次返回之外,该示例并未演示任何有用的内容。我想了解如何在此上下文中运行查询并访问模型数据,但我已经搜索了几个小时,甚至无法查找有关这些简单任务的文档。也许我只是在寻找错误的地方。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:9)

通常,您可以通过所有模型获得的内置方法完成您想做的大多数事情,例如查询和访问模型数据(CRUD操作);见http://docs.strongloop.com/display/LB/Working+with+data。为这些定义远程方法(自定义REST端点)将是多余的。

如果您愿意,可以在远程方法代码中访问标准model CRUD Node APIs(例如myModel.create(),myModel.find(),myModel.updateAll())。

您还可以在https://github.com/strongloop/loopback-example-app-logic

中找到更多相关示例

以下是使用入门应用https://github.com/strongloop/loopback-getting-started应用的示例。它定义了一个带有数字arg的远程方法,并将具有该ID的咖啡店名称输出到控制台:

这段代码是共同的/ models / coffeeshop.js:



module.exports = function(CoffeeShop) {
...
  // Return Coffee Shop name given an ID.
  
  CoffeeShop.getName = function(shopId, cb) {
    CoffeeShop.findById( shopId, function (err, instance) {
        response = "Name of coffee shop is " + instance.name;
        cb(null, response);
        console.log(response);
    });
  }
...
  CoffeeShop.remoteMethod (
    'getName', 
    {
      http: {path: '/getname', verb: 'get'},
      accepts: {arg: 'id', type: 'number', http: { source: 'query' } },
      returns: {arg: 'name', type: 'string'}
     }
  );
};




您可以使用API​​资源管理器加载http://0.0.0.0:3000/explorer/#!/CoffeeShops/getName,然后输入一个数字(最初在应用中只有三家咖啡店)作为查询参数并点击“#34;试一试!”#34;

或者只需获取http://0.0.0.0:3000/api/CoffeeShops/getid?id=1

等网址即可

兰德

答案 1 :(得分:2)

我终于发现了我的问题。必须在调用CRUD操作的函数的回调中加载对象属性。以下语法对我有用:

module.exports = function (TestModel) {
    TestModel.testRemoteMethod = function (id, name, cb) {
        TestModel.findOne({where: {id: id}}, function(err, modelInstance) {
            //modelInstance has properties here and can be returned to
            //the API call using the callback, for example:
            cb(null, {"name": modelInstance.name});
        }
    }
    TestModel.remoteMethod('testRemoteMethod',
        //..rest of config