问题标签 [rethinkdb-javascript]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
644 浏览

node.js - RethinkDB 的短连接还是长连接?

我们有一个基于 restify 的 Node.js 项目,我们使用 RethinkDB 作为数据库。问题是应该从代码的不同部分(从路由处理程序、中间件)访问 RethinkDB,但不是针对所有请求。我想知道在这种情况下连接到 RethinkDB 的最佳方式是什么?

我看到下一个选项:

  • 有一个存储在某处的长连接(我们现在使用的方法),

  • 在每个 HTTP 请求上连接到 RethinkDB,这可能是一些从未使用过的连接,

  • 单独连接每个部分,每个 HTTP 请求可能有多个连接,但没有无用的连接。

我问这个问题是因为我不确定 Rethink 处理短/长连接的能力如何以及它们的成本有多高。例如 MongoDB 更喜欢长连接,但 RethinkDB 文档中的所有示例每个 HTTP 请求都使用一个连接。

0 投票
1 回答
90 浏览

rethinkdb - RethinkDB:​​reduce 是否会迭代所有分组数据?

我以为我有 rethinkdb :) 但现在我有点困惑 - 对于这个查询,计算分组数据:

我得到了预期的结果(数字):

所有减少结果都是~40,这是预期的(并且是正确的),但是当我像这样使用 reduce 计数时:

我得到的结果要低得多(~10),这毫无意义:

当然,我需要使用 reduce 来进行进一步的操作。我错过了什么吗?

我在服务器上使用 v2.0.3,查询直接在 dataexplorer 上测试。

0 投票
1 回答
192 浏览

rethinkdb - rethinkdb 更新嵌套数组

我有以下结构:

我想从 id_tweet:"389193311908413440" 设置 status_tweet:1

我可以使用 id_tweet:"389193311908413440" 获取数组的元素

但是当我尝试更新该字段时,我收到一个错误:

提前致谢

0 投票
2 回答
305 浏览

rethinkdb - RethinkDB:​​从对象中获取最后 N

从对象中获取最后 N 个键值对的有效方法是什么?按键名排序,N 为任意整数。理想情况下,返回的类型也应该是一个对象。

0 投票
1 回答
2395 浏览

node.js - RethinkDB 连接“必须打开”但永远不会关闭

我在 Node.js 中使用 RethinkDB 和 hapi.js。我的主应用程序将打开的连接传递给 hapi.js 插件。在主脚本中使用连接可以正常工作,但在插件中运行某些东西会引发以下错误:

我试图弄清楚连接是否关闭,但没有任何添加的侦听器触发。

我可以确认事件列表器通常在调用connection.close()手动输出时正常工作!!closed

我在 GitHub 上询问 hapi.js 社区,是否将传递的对象作为副本传递给插件,但实际上并非如此。

这是引发错误的代码:

把它们加起来:

  • 连接应该打开,因为它永远不会关闭
  • (在插件内部:)无法从数据库中获取数据,因为 RethinkDB 说First argument to 'run' must be an open connection.

有什么方法可以找出连接不再打开的原因吗?

RethinkDB 版本:2.1.5
hapi.js 版本:11.1.2

谢谢!

0 投票
1 回答
275 浏览

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

我开始使用 RethinkDB,但在理解我正在运行的一些查询时遇到了一些麻烦。

问题是从暴露 JSON API的 NodeJS 应用程序(使用 rethinkdbdash 驱动程序)查询具有日期时间类型的对象 。如果我单独查询我的对象,例如:

我得到时间戳字段的 JavaScript 日期,而如果我在查询中运行 group by 运算符,例如:

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

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

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

谢谢,


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

0 投票
2 回答
1795 浏览

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

我在基于 RethinkDB Chat 示例的 Node 登录/注册系统上工作,当时我发现它不会检查用户是否存在电子邮件或用户名,这是一个问题。当我试图解决这个问题时,我无法找出原因,因为运行数据库检查需要一个带有函数的回调,这使得它很难实现。

如果用户存在的用户名或邮件与它将发送的形式相同的用户名或邮件存在,我需要什么帮助:

所以主要问题是我必须知道它是否存在于与其他函数相同的函数中,而不是回调中。任何帮助表示赞赏!

0 投票
2 回答
211 浏览

rethinkdb - 在 RethinkDB (javascript) 中创建二级索引不像在文档中那样工作

我正在基于 RethinkDB 中的 2 个字段在 javascript 中创建索引(实际上是使用rethinkdbdash驱动程序)。代码是这样的: r.table('someTable').indexList().contains("indexName").do(containsIndex => { return r.branch( containsIndex, {created: 0}, r.table('someTable').indexCreate("indexName", [r.row("field1"), r.row("field2")]) ); }).run();

所以它有条件地创建索引,如果它不存在的话。分支确实适用于单字段索引。但ReqlCompileError: Cannot use r.row in nested queries. Use functions instead在这种情况下它返回 a 。

文档(https://www.rethinkdb.com/api/javascript/index_create/)清楚地给出了这个例子: r.table('comments').indexCreate('postAndDate', [r.row("postId"), r.row("date")]).run(conn, callback)

那么我错过了什么?使用 rethinkdbdash 驱动程序有什么改变吗?如果我确实使用了一个函数(如错误消息所建议的那样),我可以连接我的 2 个字段,但是如何使用该索引进行查询?

谢谢。

0 投票
0 回答
34 浏览

rethinkdb - 使用 rethinkdb javascript 驱动程序订阅更改时是否需要清理游标资源?

订阅 changefeeds 时,当游标超出管理资源/连接/等的范围时,我是否需要清理或关闭游标??

当连接和资源超出范围时,rethinkdb 驱动程序在清理连接和资源方面有多聪明?

0 投票
1 回答
44 浏览

rethinkdb - Rethinkdb 多级分组

假设我有一张包含以下文件的表格:

是否可以将所有文档分组为最终的 json 结构,例如:

如果是的话,最好和最有效的方法是什么?我有超过一百万个这样的文档,在 4 个带有强大服务器的分片上(每个 22 Gb 缓存)

我已经尝试过了(目前在数据资源管理器中,在 JS 中):

接着

但是数据浏览器似乎挂起,如您所见,仍在处理它......