过滤属性在提供的数组

时间:2016-02-28 19:55:14

标签: rethinkdb rethinkdb-javascript thinky

假设我在Things表中有这些文档:

{
  "name": "Cali",
  "state": "CA"
},
{
  "name": "Vega",
  "state": "NV",
},
{
  "name": "Wash",
  "state": "WA"
}

我的UI是状态选择器,用户可以在其中选择多个状态。我想显示适当的结果。 SQL等价物是:

SELECT * FROM Things WHERE state IN ('CA', 'WA')

我试过了:

r.db('test').table('Things').filter(r.expr(['CA', 'WA']).contains(r('state')))

但这不会返回任何内容,我不明白为什么那样做不起作用。

这适用于获得单一状态:

r.db('test').table('Things').filter(r.row('state').eq('CA'))

1 个答案:

答案 0 :(得分:1)

r.db('test').table('Things').filter(r.expr(['CA', 'WA']).contains(r.row('state')))

似乎在某些版本中有效并返回

[
  {
    "id":  "b20cdcab-35ab-464b-b10b-b2f644df73e6" ,
    "name":  "Cali" ,
    "state":  "CA"
} ,
  {
    "id":  "506a4d1f-3752-409a-8a93-83385eb0a81b" ,
    "name":  "Wash" ,
    "state":  "WA"
  }
]

无论如何,您可以使用函数代替r.row:

r.db('test').table('Things').filter(function(row) {
  return r.expr(['CA', 'WA']).contains(row('state'))
})