嵌套对象更新不会触发changedFeed事件

时间:2018-05-22 15:41:06

标签: rethinkdb

我有一个表包含字段头像的用户。该字段是一个对象,例如:

{
    "file": {
        "identifier":  "fafa2570-d642-4c78-912a-f275b70abed9" ,
        "mimeType":  "image/jpeg" ,
        "name":  "fafa2570-d642-4c78-912a-f275b70abed9.jpg"
    }
}

默认情况下,当我创建用户时,字段头像不存在。 如果字段头像更新,我无法触发操作。我试过了:

rethinkdb.table(USER_TABLE_NAME)
.changes()
.filter(rethinkdb.row('old_val')('avatar').ne(rethinkdb.row('new_val')('avatar')))
.run((err, change) => {
    change.each((changeErr, { new_val }) => {
        // do my actions here ...
    });
});

你知道得到我想要的好查询吗? 非常感谢:)!

1 个答案:

答案 0 :(得分:0)

我找到了一种方法:

rethinkdb.table(USER_TABLE_NAME)
.changes()
.filter(
    (
        rethinkdb.row('old_val').hasFields({ avatar: true }).not()
        .and(rethinkdb.row('new_val').hasFields({ avatar: true }))
    )
    .or(
        rethinkdb.row('old_val').hasFields({ avatar: true })
        .and(rethinkdb.row('new_val').hasFields({ avatar: true }).not())
    )
    .or(
        rethinkdb.row('old_val')('avatar')('file')('identifier')
        .ne(rethinkdb.row('new_val')('avatar')('file')('identifier'))
    )
)
.run((err, change) => {
    change.each((changeErr, { new_val }) => {
        // do my actions here ...
    });
});

这很重,但它确实起作用。