使用组运算符时时间伪类型而不是 ISO8601

Time pseudotype instead of ISO8601 when using group operator

我刚开始使用 RethinkDB,我在理解某些查询时遇到了一些问题,我正在 运行ning。

问题是从 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"
}

这是预期的行为吗?其背后的逻辑是什么?

我想 return 在我的 JSON 中序列化 iso8601 日期而不是这种数据类型以使解析对客户透明。

谢谢,


更新 这是 2.2.7 之前版本的已知问题。 Fixed here.

这看起来像是 rethinkdbdash 中的错误。服务器总是将时间作为伪类型(具有 $reql_type$ 字段的对象)发送给客户端,客户端负责将伪类型转换为本地时间对象(因为不同语言的驱动程序必须以不同的方式执行此操作)。我会在 https://github.com/neumino/rethinkdbdash/issues 上打开一个错误。

我猜错误的来源是 group returns 一个 GROUPED_DATA 伪类型和 rethinkdbdash 没有正确转换其他伪类型中的伪类型。如果您 运行 db.table('apples').group('type').max('timestamp').ungroup(),这可能会解决此查询的问题,直到驱动程序被修补。