Несколько запросов RethinkDB в одном запросе

Я пытаюсь выполнить несколько команд RQL в одном запросе к серверу, без особого успеха, который я могу добавить. Я пробовал r.union, но он работает только с последовательностями. Чего я действительно хочу:

[r.db(..).table(..).get(id1).delete(),
 r.db(..).table(..).get(id2).delete(),
 r.db(..).table(..).insert(...)].run_all_at_once

Есть какой-либо способ сделать это?

Спасибо!


person PJK    schedule 29.11.2013    source источник


Ответы (2)


Ты можешь сделать

r.expr( [r.db(...).table(...).get(id1).delete(), 
r.db(...).table(...).get(id1).delete(), 
r.db(...).table(...).insert(...) ] ).run(conn)

Обратите внимание, что метод удаления не получает аргумент.

person neumino    schedule 30.11.2013
comment
Да, это работает. Я бы не понял из описания: rethinkdb.com/api/ruby/expr - person PJK; 13.12.2013
comment
Это лучше, чем r.do, поскольку возвращает результаты для всех запросов. - person tim-montague; 11.05.2019

Вы также можете использовать do

r.do(
  r.table('test').insert({value1: "Hey"}),
  r.table('test').insert({value2: "Ho"})
).run(conn);
  • Запросы оцениваются от последнего к первому
  • Ответ будет результатом последнего запроса
person Jens    schedule 14.05.2015
comment
Что, если бы я хотел получить сгенерированный ключ (UUID), возвращаемый первым insert? - person tim-montague; 11.05.2019