2015-12-03 11 views
7

Rozpoczęłam pracę z programem RethinkDB i mam problem ze zrozumieniem, co się dzieje z niektórymi zapytaniami, które używam.Pseudotyp czasu zamiast ISO8601 podczas korzystania z operatora grupy

Problem polega na wysyłaniu zapytań do obiektów o typach dat z aplikacji NodeJS (przy użyciu sterownika rethinkdbdash), która udostępnia interfejs API JSON. Jeśli kwerendy moje obiekty indywidualnie jak:

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

uzyskać JavaScript Daty dla pól datownika, natomiast jeśli uruchomię grupę przez operatora w zapytaniu jak w:

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

uzyskać Pseudotypy czasu daty (Myślę, że to jest poprawna nazwa) dla tych samych pól znacznika czasu. Coś jak:

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

Czy to oczekiwane zachowanie? Jaka jest logika?

Chciałbym zwrócić serializowane daty iso8601 w moim JSON, a nie ten typ danych, aby parsowanie było przejrzyste dla klientów.

Dzięki,


UPDATE Był to znany problem dla wersji przed 2.2.7. Fixed here.

Odpowiedz

2

To wygląda jak błąd w rethinkdbdash. Serwer zawsze wysyła czasy do klientów jako pseudotypy (obiekt z polem $reql_type$), a klienci są odpowiedzialni za przekształcenie pseudotypów w obiekty czasu macierzystego (ponieważ sterowniki w różnych językach muszą to robić inaczej). Otworzyłem błąd na https://github.com/neumino/rethinkdbdash/issues.

Domyślam się, że źródłem błędu jest to, że group zwraca pseudotyp o wartości GROUPED_DATA, a rethinkdbdash nie przekształca poprawnie pseudotypów znajdujących się w innych pseudotypach. Jeśli uruchomisz db.table('apples').group('type').max('timestamp').ungroup(), może to naprawić problem dla tego zapytania, dopóki sterownik nie zostanie załatany.

+1

Dzięki za odpowiedź @mlucy, rozgrupowanie rzeczywiście rozwiązuje problem w tym konkretnym przypadku. Przekażę to ludziom, którzy są ponownie rethinkdbdash. Dzięki jeszcze raz. – Marc

Powiązane problemy