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之前版本的已知问题.固定在这里.
这看起来像是 rethinkdbdash 中的一个错误。服务器始终将时间作为伪类型(带有字段的对象$reql_type$)发送给客户端,客户端负责将伪类型转换为本机时间对象(因为不同语言的驱动程序必须以不同的方式执行此操作)。我会在https://github.com/neumino/rethinkdbdash/issues上打开一个错误。
我猜这个错误的根源是group返回一个GROUPED_DATA伪类型,而 rethinkdbdash 没有正确转换其他伪类型内部的伪类型。如果运行db.table('apples').group('type').max('timestamp').ungroup(),则可能会解决此查询的问题,直到修补驱动程序为止。