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"
}

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

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

谢谢,


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

4

1 回答 1

2

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

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

于 2015-12-07T10:08:11.020 回答