首页 > 解决方案 > 嵌套对象更新不会触发 changedFeed 事件

问题描述

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

{
    "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 ...
    });
});

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

标签: rethinkdb

解决方案


我找到了一个方法:

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 ...
    });
});

它很重,但它可以完成工作。


推荐阅读