使用组运算符时的时间假型而不是ISO8601

Mar*_*arc 8 rethinkdb rethinkdb-javascript

我开始使用RethinkDB,我在理解正在运行的一些查询时遇到了什么问题.

问题是使用暴露JSON API 的NodeJS应用程序(使用rethinkdbdash驱动程序)查询具有日期时间类型的对象 .如果我单独查询我的对象,如:

db.table('apples').max('timestamp');
Run Code Online (Sandbox Code Playgroud)

我获取时间戳字段的JavaScript日期,而如果我在查询中运行group by运算符,如:

db.table('apples').group('type').max('timestamp');
Run Code Online (Sandbox Code Playgroud)

我得到相同时间戳字段的日期时间假型(我认为这是正确的名称).就像是:

{
  "$reql_type$": "TIME",
  "epoch_time": 1423077646.772,
  "timezone": "-07:00"
}
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢,


更新 这是2.2.7之前版本的已知问题.固定在这里.

mlu*_*ucy 2

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

我猜这个错误的根源是group返回一个GROUPED_DATA伪类型,而 rethinkdbdash 没有正确转换其他伪类型内部的伪类型。如果运行db.table('apples').group('type').max('timestamp').ungroup(),则可能会解决此查询的问题,直到修补驱动程序为止。