【问题标题】:Filter Remote Method in loopback在环回中过滤远程方法
【发布时间】:2018-05-04 21:00:58
【问题描述】:

我在环回中创建了一个远程方法

  XXX.remoteMethod('getAllGlobalFilters', {
    'description': 'List of all GlobalFilters',
    'http': {
      'path': '/getAllGlobalFilters',
      'verb': 'get'
    },
    'accepts': [
      {'arg': 'filter', 'type': 'object', 'http': {'source': 'query'}}
    ],
    'returns': {'arg': 'allGlobalFilters', 'type': 'array'}
  });


  XXX.getAllGlobalFilters = function(arg, callback) {
    console.log(arg);
    rtbSspPubFilter.find({
      where: {
        type: 15
      },
      include: [{relation: 'XXX'}]
    }, function(err, data) {
      if (err) {
        return callback(err);
      }
      return callback(null, data);
    });
  };
};

我可以使用 find 并且远程方法工作正常,但我无法使用正则表达式,如远程方法中的过滤我如何访问相同的环回默认过滤器。

我想使用可用于本机环回模型的 json 类过滤器。如上图

【问题讨论】:

  • loopback.io/doc/en/lb3/Remote-methods.html 如您在此处阅读的那样,过滤器方法不是远程方法的属性之一,因此您可以在路径中包含过滤器,例如 /getAllGlobalFilters?filter[something]=something&filter[limit]=3

标签: javascript node.js loopbackjs loopback


【解决方案1】:

首先,作为远程​​函数的良好做法,不要使用arg,而是使用您在远程方法中定义的名称filter。这样,当您定义了多个属性时,就不会那么混乱了。

但是,在您的问题中,您只需传递一个字符串,然后将其解析为函数中的 JSON 对象,如下所示:

   XXX.remoteMethod('getAllGlobalFilters',
         {
            'accepts': [{'arg': 'filter','type': 'string'}],
           'http': {
               'path': '/getAllGlobalFilters',
               'verb': 'get'
             },
            'returns': {'arg': 'allGlobalFilters', 'type': 'array'}
         });

   XXX.getAllGlobalFilters = function(filter, callback) {
       filter = JSON.parse(filter);
       rtbSspPubFilter.find(filter, function(err, data) {
          if (err) {
            return callback(err);
          }
          return callback(null, data);
        });
   };

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    • 2017-04-09
    • 2016-10-25
    • 1970-01-01
    相关资源
    最近更新 更多