0

我有一个简单的数据库,可以在其中插入消息。我使用带有 squash 选项的 change() 方法每 10 秒获取一次新消息:

  r.table('wall_posts').orderBy({
    index: r.asc('date')
  }).limit(100).changes({
    squash: 10
  })...

我想每 10 秒获取一个新消息数组。我知道这个游标的输出是无限的。
有没有办法通过检测光标将阻塞直到更多元素可用的时刻来获取数组?(或任何其他方式)

谢谢

4

1 回答 1

0

要回答以下问题:

有没有办法通过检测光标将阻塞直到更多元素可用的时刻来获取数组?(或任何其他方式)

您不能在 RethinkDB 级别之外执行此操作吗?每当光标有新数据时,您可以将其推送到其他回调中以创建数组。

但我觉得:

当你说你想每 10 秒收到一次新消息时,是什么阻止了你做这样的事情:

setInterval(function() {
    r.table('wall_posts').orderBy({
        index: r.asc('date')
    }).limit(100)
}, 10000)

你使用索引的方式date让我觉得你只想得到最新的帖子。如果是这种情况,我认为您不必changes在此处使用事件。

例如,如果您有一个 UI,每当有新消息出现时,您就需要使用新消息更新 UI,这就是changes目的。

于 2015-08-15T21:54:47.310 回答