是否可以在深层使用列表订阅数据?似乎对数据的更改不会使subscribe()
函数跳闸,只有类似addEntry()
的内容才会影响列表订阅。
const deepstream = require('deepstream.io-client-js') ;
const util = require('util') ;
const client = deepstream('localhost:6020').login();
var obj_1 = { 'sequelizeName':'Mark', 'sequelizeAddr':'123 Elm Lane' , 'sequelizeId':'1111'};
var obj_2 = { 'sequelizeName':'Lori', 'sequelizeAddr':'948 Maple Street' , 'sequelizeId':'2222'};
const rec_1 = client.record.getRecord('obj_one');
const rec_2 = client.record.getRecord('obj_two');
rec_1.set(obj_1);
rec_2.set(obj_2);
var listTest = client.record.getList('listTest');
listTest.setEntries( ['obj_one' ,'obj_two' ] );
listTest.subscribe( (result) => {
console.log('LIST SUBSCRIBE: ' + util.inspect(result));
})
setTimeout( () => {
obj_1.sequelizeAddr = '321 New Address';
rec_1.set(obj_1); // how can this change show up in the list subscribe?
}, 2000 );
我被鼓励尝试使用列表的新方法,但我不清楚如何使用列表订阅数据本身的更改,除了以某种方式具有某种“通用”或“全局”订阅,我我不确定是否可能。
或者有什么方法可以使用匿名记录订阅?
答案 0 :(得分:1)
列表只是字符串数组。您的列表内容未连接到实际记录。您甚至不能假设列表条目是记录名称。您需要手动订阅列表中的每个记录名称以获取其内容更新。
答案 1 :(得分:0)
这个建议是由沃尔夫拉姆和菲利普所做的:
class User{
constructor( recordName ) {
this.record = ds.record.getRecord( recordName );
this.record.subscribe( this._processUpdate.bind( this ) );
}
_processUpdate( data ) {
if( this.record.name === '...') {
// do stuff
}
}
}
这很有效。谢谢你们两个。