【问题标题】:making joins in rethinkdb在 rethinkdb 中加入
【发布时间】:2013-09-09 10:14:31
【问题描述】:

我正在尝试在两个表之间建立连接。我正在运行的命令是:

r.table("userclientmap").eq_join("user_id", r.table("users"))

我的“用户”表如下所示:

[
    {
        "email":  "nielsen.ruben@gmail.com"
        "password":  "$2a$10$nO4/KHYkKRcx3D8GYwMCVu.gtsWd1SWzWz27N.TdxqdD9bf.LBXI6"
    }
]

我的 'userclientmap' 表如下所示:

[
    {
        "client_id":  "3c0e6447-ab2f-401e-a09d-d84c32406fe2" ,
        "id":  "d6356002-9e51-4f82-afb7-49799f7b5ded" ,
        "user_id":  "nielsen.ruben@gmail.com"
    }
]

从管理控制台运行查询时出现以下错误:

无法执行查询。

r.table("userclientmap").eq_join("user_id", r.table("users"))

错误:

TypeError: Object function () {
    var args;
    args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
    if (args.length !== fun.length) {
      throw new err.RqlDriverError("Expected " + fun.length + " argument(s) but found " + args.length + ".");
    }
    return fun.apply(this, args);
  } has no method 'eq_join'

我真的不知道从这里去哪里。我的查询与http://rethinkdb.com/docs/table-joins/上的文档中的查询完全相同

我正在运行 rethinkdb 版本 1.8.1-0ubuntu1~raring (GCC 4.7.3)

【问题讨论】:

    标签: database join many-to-many rethinkdb


    【解决方案1】:

    管理 UI 中的数据资源管理器使用 JavaScript,而连接文档 (http://rethinkdb.com/docs/table-joins/) 使用 Python 示例。 eqJoin 是 JavaScript 驱动程序在 Python 中的 eq_join 等价物。

    你应该使用:

    r.table('userclientmap').eqJoin('user_id', r.table('users'))

    (见http://www.rethinkdb.com/api/#js:joins-eqJoin)。

    【讨论】:

    • 多么令人讨厌的错误:P 为什么这些会有所不同呢?不过谢谢:)
    • 每种语言的驱动程序都遵循本地语言的约定(例如,JS 的驼峰式大小写,Python 的下划线)——RethinkDB 的优点之一是查询语言 (ReQL) 感觉就像它正在编写本机代码,而不是在所有语言(如 SQL)中遵循一种语法。但是,文档显然需要尽可能多语言——我会在这样的地方打开一个问题来改进文档(完全可以理解的错误!)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 2015-07-20
    相关资源
    最近更新 更多