Псевдотип времени вместо ISO8601 при использовании группового оператора

Я начинаю работу с RethinkDB, и у меня возникают проблемы с пониманием того, что происходит с некоторыми запросами, которые я выполняю.

Проблема заключается в запросе объектов с типами даты и времени из приложения NodeJS (с использованием драйвера rethinkdbdash), которое предоставляет JSON API. Если я запрашиваю свои объекты по отдельности, например:

db.table('apples').max('timestamp');

Я получаю даты JavaScript для полей меток времени, а если я запускаю группу по оператору в запросе, например:

db.table('apples').group('type').max('timestamp');

Вместо этого я получаю псевдотипы даты и времени (я думаю, что это правильное имя) для тех же полей меток времени. Что-то вроде:

{
  "$reql_type$": "TIME",
  "epoch_time": 1423077646.772,
  "timezone": "-07:00"
}

Это ожидаемое поведение? Какая логика стоит за этим?

Я хотел бы вернуть сериализованные даты iso8601 в моем JSON, а не этот тип данных, чтобы сделать синтаксический анализ прозрачным для клиентов.

спасибо,


ОБНОВЛЕНИЕ Это была известная проблема для версий до 2.2.7. Исправлено здесь.


person Marc    schedule 03.12.2015    source источник


Ответы (1)


Это похоже на ошибку в rethinkdbdash. Сервер всегда отправляет время клиентам в виде псевдотипов (объект с полем $reql_type$), и клиенты несут ответственность за превращение псевдотипов в собственные объекты времени (поскольку драйверы на разных языках должны делать это по-разному). Я бы открыл ошибку на https://github.com/neumino/rethinkdbdash/issues .

Я предполагаю, что источником ошибки является то, что group возвращает псевдотип GROUPED_DATA, а rethinkdbdash неправильно конвертирует псевдотипы, которые находятся внутри других псевдотипов. Если вы запустите db.table('apples').group('type').max('timestamp').ungroup(), это может решить проблему для этого запроса, пока драйвер не будет исправлен.

person mlucy    schedule 07.12.2015
comment
Спасибо за ответ @mlucy, разгруппировка действительно решает проблему в этом конкретном случае. Я донесу это до людей, переосмысливающих dbdash. Спасибо еще раз. - person Marc; 07.12.2015