如何在Loopabck中基于标签数组过滤订户

时间:2018-10-04 06:14:57

标签: node.js postgresql loopbackjs loopback

我有两个模型-订户标签

样本数据:

{
 subscribers: [
  {
   name: "User 1",
   tags: ["a","b"] 
  },
  {
   name: "User 2",
   tags: ["c","d"] 
  }
 ]
}

我想根据订阅者的标签过滤订阅者。

  • 如果我给ab标签,则用户1应该列出
  • 如果我给ac标签, 用户1和用户2都应列出

这是我尝试过的:

方法1:

tagssubscribers模型中具有数组数据类型的列

/subscribers/?filter={"where":{"tags":{"inq":["a","b"]}}} // doesn't work

方法2:

创建了一个单独的表tags,并且集合subscribers中有许多tags

/subscribers/?filter={"where":{"tags":{"inq":["a","b"]}}} // doesn't work

如何在Loopback中实现而不编写自定义方法?

我已将 Postgresql 作为连接器

2 个答案:

答案 0 :(得分:2)

更新

loopback docs中所述,您应该使用inq而不是In

  

inq 运算符检查指定属性的值是否与数组中提供的任何值匹配。通用语法为:   {其中:{属性:{ inq :[val1,val2,...]}}}

从此:

/ subscribers /?filter = {“ where”:{“ tags”:{“ In” :[“ a”,“ b”]}}}

对此:

/ subscribers /?filter = {“ where”:{“ tags”:{“ inq” :[“ a”,“ b”]}}}

答案 1 :(得分:0)

最后使用Regex找到了一个骇客!这不是一个高性能的解决方案,但它可以工作!!

{ "where": { "tags": { "regexp": "a|b" } } }

相关问题