1

我不确定我是否完全理解 changefeeds 正确......我需要做的是根据当前日期过滤数据,如下所示:

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() 仅在更新行的字段时才有效?

4

1 回答 1

1

这是可能的,语法是正确的。

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

Changefeeds 适用于插入和更新。如果插入/更新的文档与您的条件匹配filter,它将在光标中返回。如果是插入,old_valnull,如果是更新,old_val 是旧值。

于 2016-01-07T18:23:36.403 回答