我不确定我是否完全理解更改进展正确...我需要做的是根据当前日期过滤数据:
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()仅在行的某个字段更新时才有效吗?
答案 0 :(得分:1)
它的可能性和语法是正确的。
然而,只是一个注释,以防你错过它。 r.now()
在您第一次运行查询时进行评估,而不是在发生更改时的当前时间。
r.now()在同一个查询中只计算一次,返回值在后续调用中重复使用:https://www.rethinkdb.com/api/javascript/now/
Changefeeds适用于插入和更新。如果插入/更新的文档与filter
的条件匹配,则将以光标返回。如果是插入内容,则old_val
为null
,如果是更新,则old_val为旧值。