RethinkDB returns Data Explorer 中 r.row 的错误结果
RethinkDB returns incorrect results in Data Explorer with r.row
环境测试:RethinkDB 2.3.5 安装在 Ubuntu Xenial 上,同样在 MacOS Sierra 上测试。
以下是在全新安装中完成的,其中一条记录已添加到测试数据库中:
Screenshot
没有 r.row 的 Dashboard Data Explorer 精确匹配查询确实找到了记录。
1 row returned. Displaying rows 1-1
{
"id": "f26a33f4-5add-442e-93b6-5fb93e817fb8" ,
"myfield1": 1 ,
"myfield2": "content"
}
与 Python3 一起使用 r.row:
>>> import rethinkdb
>>> conn = r.connect()
>>> r.db('test').table('test').filter(r.row['myfield1'] == 1).run(conn)
<rethinkdb.net.DefaultCursor object at 0x7f8a95839438 (done streaming):
[{'myfield1': 1, 'myfield2': 'content', 'id': 'f26a33f4-5add-442e-93b6-5fb93e817fb8'}]>
>>>
这意味着数据设置正确。
但是,Dashboard Data Explorer 在 r.row 过滤器上失败:这是 "No records found" 的结果,而不是预期的“返回 1 行。显示第 1-1 行”:
Failure Screenshot
你能帮我找到在 Dashboard Data Explorer 中使用 r.row 的正确方法是什么,或者确认它是真正的错误(那么很重要)吗?
仪表板使用 Javascript 语法,不理解 Python。所以,查询应该放在 Javascript:
代替Python语法
r.db('test').table('test').filter(r.row['myfield1'] == 1)
仪表板接受 Javascript 语法:
r.db('test').table('test').filter(r.row("myfield1").eq(1))
环境测试:RethinkDB 2.3.5 安装在 Ubuntu Xenial 上,同样在 MacOS Sierra 上测试。
以下是在全新安装中完成的,其中一条记录已添加到测试数据库中:
Screenshot
没有 r.row 的 Dashboard Data Explorer 精确匹配查询确实找到了记录。
1 row returned. Displaying rows 1-1
{
"id": "f26a33f4-5add-442e-93b6-5fb93e817fb8" ,
"myfield1": 1 ,
"myfield2": "content"
}
与 Python3 一起使用 r.row:
>>> import rethinkdb
>>> conn = r.connect()
>>> r.db('test').table('test').filter(r.row['myfield1'] == 1).run(conn)
<rethinkdb.net.DefaultCursor object at 0x7f8a95839438 (done streaming):
[{'myfield1': 1, 'myfield2': 'content', 'id': 'f26a33f4-5add-442e-93b6-5fb93e817fb8'}]>
>>>
这意味着数据设置正确。
但是,Dashboard Data Explorer 在 r.row 过滤器上失败:这是 "No records found" 的结果,而不是预期的“返回 1 行。显示第 1-1 行”:
Failure Screenshot
你能帮我找到在 Dashboard Data Explorer 中使用 r.row 的正确方法是什么,或者确认它是真正的错误(那么很重要)吗?
仪表板使用 Javascript 语法,不理解 Python。所以,查询应该放在 Javascript:
代替Python语法
r.db('test').table('test').filter(r.row['myfield1'] == 1)
仪表板接受 Javascript 语法:
r.db('test').table('test').filter(r.row("myfield1").eq(1))