嵌入式数组中的 ReQL 更新对象在侦听更改时发出 "create" 和 "delete" 事件
ReQL Updating object inside an embedded array emits "create" and "delete" events when listening to changes
我遇到了以下问题:假设我有以下结构:
{
"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 不为空。
提前谢谢大家
你可以使用这样的东西
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))
})
毕竟,我决定放弃嵌入式数组并使用 table 联接,这避免了所有可能的黑客攻击。
我遇到了以下问题:假设我有以下结构:
{
"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 不为空。
提前谢谢大家
你可以使用这样的东西
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))
})
毕竟,我决定放弃嵌入式数组并使用 table 联接,这避免了所有可能的黑客攻击。