为什么包含.Filter(func())在gorethink中不起作用,查询部分被忽略了?

时间:2017-05-16 08:02:09

标签: go gorethink

我正在尝试这样做:

r.table(table).filter(
  function (doc) {
    return r.expr(array)
            .contains(doc("name"));
  }
)
用plang写的

rethink.Table(table).GetAllByIndex(index, value).Filter(func(row rethink.Term) interface {}{

    return rethink.Expr([]string{}).Contains(row.Field("type"))
})

我不确定但是就像rethink.Expr被忽略了。 这是第一个问题。

接下来是第二个问题。如果我有这样的查询:

query := rethink.Table(table).GetAllByIndex(index, value)

然后尝试做下一步:

if some_condition {
   q.Filter(some_filter)
}

if some_other_condition {
   q.Filter(some_other_filter)
}

当我打印出q.String()时,我只获得了第一部分而忽略了其他所有内容rethink.Table(table).GetAllByIndex(index, value)

1 个答案:

答案 0 :(得分:0)

由于Filter方法会返回一个新的Term,其中包含前一个词的表达式,因此您需要将结果重新分配回q

if some_condition {
   q = q.Filter(some_filter)
}

if some_other_condition {
   q = q.Filter(some_other_filter)
}