1

我遇到了以下问题:假设我有以下结构:

{
    "id": 1,
    "data": {
       "arr": [{"text":"item1"}]
    }
}

以及以下查询:

r.db('test').table('test').get(1).update(function (item) {
    return {
        data: {
          arr: item('data')('arr').map(function (row) {
             return r.branch(
                  row('text').eq('item1'),
                  row.merge({updated:true}),
                  row
             )
          })
        }
    }
})

我只监听这个特定数组的变化,当项目更新时,创建和删除事件都会发出。我真的需要接收更新事件,例如 old_val 不为空,new_val 不为空。

提前谢谢各位

4

2 回答 2

2

毕竟,我决定放弃嵌入式数组并使用表连接,这避免了所有可能的黑客攻击。

于 2016-03-16T08:25:00.010 回答
1

你可以使用这样的东西

r.db('test').table('test')('data')('arr').changes()
  .filter(function(doc) {
    return doc('new_val').ne(null).and(doc('old_val').ne(null))
  })

我只会显示对数组的更新。如果您需要访问其他文档字段,请尝试以下操作:

r.db('test').table('test').changes()
  .filter(function(doc) {
    return doc('new_val')('data')('arr').ne(null).and(doc('old_val')('data')('arr').ne(null))
  })
于 2016-03-15T19:47:12.680 回答