在RethinkDB / ReQL中使用过滤器中的另一个查询的结果

时间:2016-08-25 12:10:54

标签: rethinkdb rethinkdb-javascript reql

任何想法如何在客户端过滤器中选择代理ID?

这就是我现在所拥有的并且它有效,但我不喜欢首先我们正在等待选择代理,然后我们再次访问数据库以选择客户端。

有没有办法可以在一次旅行中用链接完成所有操作,而没有“那么”。

const clients = await r.table('agents').getAll(teamId, {index: 'teamId'})('id').then(agentIds =>
  r.table('clients').filter(client => r.or(
    r.expr(agentIds).contains(client('agentId')),
    r.table('tasks').filter(
      task => r.expr(agentIds).contains(task('agentId'))
    )('clientId').contains(client('id'))
  ))
);

1 个答案:

答案 0 :(得分:1)

你可以写:

r.table('agents').getAll(teamId, {index: 'teamId'})('id').coerceTo('array').do(agentIds =>
  ...
)

要构造一个获取agentIds的RethinkDB查询,请将它们存储在变量中,然后执行其他操作。