8

RethinkDB を使い始めたばかりですが、実行中のいくつかのクエリで何が起こっているのかを理解するのに苦労しています。

問題は、JSON API を公開するNodeJS アプリ(rethinkdbdash ドライバーを使用)から日時型のオブジェクトをクエリすることです 。オブジェクトを個別にクエリすると、次のようになります。

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

タイムスタンプ フィールドの JavaScript 日付を取得しますが、クエリで group by 演算子を次のように実行すると、次のようになります。

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

代わりに、同じタイムスタンプ フィールドの日時疑似型 (これが正しい名前だと思います) を取得します。何かのようなもの:

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

これは予想される動作ですか?その背後にあるロジックは何ですか?

解析をクライアントに透過的にするために、このデータ型ではなく、シリアル化された iso8601 日付を JSON で返したいと思います。

ありがとう、


更新 これは、2.2.7 より前のバージョンの既知の問題です。ここで修正

4

1 に答える 1

2

これは rethinkdbdash のバグのようです。サーバーは常にクライアントに疑似型 ($reql_type$フィールドを持つオブジェクト) として時間を送信し、クライアントは疑似型をネイティブの時間オブジェクトに変換する責任があります (異なる言語のドライバーは異なる方法で行う必要があるため)。https://github.com/neumino/rethinkdbdash/issuesでバグを開きます。

バグの原因は、疑似型をgroup返し、GROUPED_DATArethinkdbdash が他の疑似型の内部にある疑似型を正しく変換していないことだと思います。を実行するdb.table('apples').group('type').max('timestamp').ungroup()と、ドライバーにパッチが適用されるまで、このクエリの問題が修正される可能性があります。

于 2015-12-07T10:08:11.020 に答える