RethinkDB监听过滤查询的变化?

时间:2016-01-07 15:02:01

标签: rethinkdb rethinkdb-javascript

我不确定我是否完全理解更改进展正确...我需要做的是根据当前日期过滤数据:

r.table("messages")
  .filter(
    r.row("start").lt(r.now().toISO8601())
      .and(r.row("end").gt(r.now().toISO8601()))
  )
  .changes()
  .run(conn, (err, cursor) => {
    if (err) {
      throw err;
    }

    cursor.each(function (err, row) {
      if (err) {
        throw err;
      }

     // do stuff here

    });
  });

});

甚至可以做这样的事情吗?或者.changes()仅在行的某个字段更新时才有效吗?

1 个答案:

答案 0 :(得分:1)

它的可能性和语法是正确的。

然而,只是一个注释,以防你错过它。 r.now()在您第一次运行查询时进行评估,而不是在发生更改时的当前时间。 r.now()在同一个查询中只计算一次,返回值在后续调用中重复使用:https://www.rethinkdb.com/api/javascript/now/

Changefeeds适用于插入和更新。如果插入/更新的文档与filter的条件匹配,则将以光标返回。如果是插入内容,则old_valnull,如果是更新,则old_val为旧值。