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

标签 rethinkdb rethinkdb-javascript

我正在开始使用 RethinkDB,但在理解我正在运行的某些查询的情况时遇到了一些困难。

问题是从公开 JSON API 的 NodeJS 应用(使用 rethinkdbdash 驱动程序)查询日期时间类型的对象。如果我单独查询我的对象,如下所示:

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

我获取时间戳字段的 JavaScript 日期,而如果我在查询中运行分组运算符,如下所示:

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

我得到了相同时间戳字段的日期时间伪类型(我认为这是正确的名称)。像这样的东西:

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

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

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

谢谢

<小时/>

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

最佳答案

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

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

关于rethinkdb - 使用组运算符时使用时间伪类型而不是 ISO8601,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34068959/

相关文章:

Node.JS Rethink-DB 检查用户名和电子邮件是否已存在

redis - php时间序列数据库

javascript - Rethinkdb 通过一个查询和条件进行多次更新

coffeescript - 与 hasFields 相反的是什么?

go - 为什么 RethinkDB 很慢?

rethinkdb - rethinkdb 中的链接查询

go - 更新更新请求中的某些值

javascript - RethinkDB:​​Javascript - 如何删除嵌套对象

RethinkDB:​​数组上的实时更改,仅返回新附加的

javascript - ReQL | RethinkDB错误: Expected type TABLE but found SINGLE_SELECTION