当我更改在订阅上订阅的记录上的嵌套值时,不会触发。
var recInfo = {};
recInfo.members = [];
recInfo.members.push({id: 1});
recInfo.members.push({id: 2});
recInfo.members.push({id: 3});
例子:
var record = client.record.getRecord('user/johan');
console.log(record.get());
Output:
{
name: 'Johan',
members: [
{id: 1},
{id: 2}
]
}
record.subscribe((data) => {
log.debug(LOG_TAG + `Team '${model.name}' has changes. Changes:`, data);
});
现在,如果我更新用户的值,例如:
record.set('members[1]', {id: 2, admin: true});
我希望记录更改具有相同 id 的 id 2 的成员,但添加了管理值,然后触发 subscribe() 应该注意到的更改事件。
更改部分发生但它不会触发更改事件,因此永远不会触发订阅。
难道我做错了什么?如果我添加一个用户,订阅就有效。
编辑:
所以我找到了一种使更改触发订阅的方法,即克隆成员,进行更改,然后用新值替换整个成员。但是,文档(http://deepstream.io/docs/record.html#set ( path , value ) (对于断开的链接感到抱歉))声明我可以这样做record.set( 'personalData.firstname', 'Marge' );
,这只会更新个人数据中的名字。
我知道我正在尝试更改数组的值,这不起作用吗?
我只能用于set()
更改对象的值吗?
这是我现在正在使用的解决方法:
var members = lodash.clone(record.get('members'), true);
members[0].admin = true;
record.set('members', members);