Клиентская библиотека Horizon: возможна ли группировка?

Я реализую простое веб-приложение, используя бэкэнд Horizon и интерфейс Reactjs. Мне нужно получить коллекцию (таблицу), сгруппированную по определенному полю. Затем мне нужно упорядочить каждое сокращение по другому полю и ограничить записи в каждом сокращении до 1. Запрос Reql, который возвращает то, что мне нужно:

r.db('reporter').table('reports')
  .group('project_name')
  .orderBy(r.desc('time_created'))
  .limit(1)

Я не нашел соответствующих методов (групп) в документации (http://horizon.io/api/collection/< /а>). Я знаю, что, возможно, неправильно понял роль объекта "Коллекция" - насколько я понимаю, это прямой прокси-сервер для таблицы rethinkdb, и все операции, доступные в таблице, должны быть доступны в коллекции - я ошибаюсь? Есть ли промежуточный слой, который мне нужно реализовать, чтобы получить такое поведение?


person Jacek Chmielewski    schedule 25.06.2016    source источник


Ответы (2)


API Horizon гораздо более ограничен, чем API RethinkDB. Для коллекций определены только методы, перечисленные на странице http://horizon.io/api/collection/ . Если вам нужно более сложное поведение, вы можете встроить Horizon в приложение NodeJS и определить пользовательскую конечную точку, которая выдает любой запрос ReQL, который вы хотите: http://horizon.io/docs/embed/ .

person mlucy    schedule 25.06.2016
comment
Вы случайно не знаете, есть ли планы по расширению API коллекций, или это ограничено дизайном? - person Jacek Chmielewski; 25.06.2016
comment
Возможно, будет добавлено больше операций, и есть планы по созданию системы плагинов, позволяющей третьим сторонам добавлять свои собственные, но намеренно предполагается, что это будет гораздо меньший язык, чем ReQL. - person mlucy; 25.06.2016

Вы можете сделать это на внешнем интерфейсе, используя rxjs groupBy, потому что Horizon.io возвращает наблюдаемые rxjs.

https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/groupby.md

person jirikolarik    schedule 09.02.2017