在环回中过滤远程方法

时间:2017-11-21 11:48:39

标签: javascript node.js loopbackjs loopback

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

  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并且远程方法工作正常,但我无法使用正则表达式,如远程方法中的过滤,如何访问循环默认过滤器。

enter image description here

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

1 个答案:

答案 0 :(得分:2)

首先,作为远程​​功能的良好做法,不要使用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);
        });
   };

希望这有帮助!