订阅数据的深层列表
deepstream list subscribing to data
deepstream中是否可以使用列表订阅数据?似乎对数据的更改不会触发 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 );
我被鼓励尝试使用列表的新方法,但我不清楚如何使用列表订阅数据本身的变化,除了以某种方式有某种 "generic" 或 "global" 订阅,我不确定是否可行。
或者有什么方法可以使用匿名记录进行订阅吗?
列表只是字符串数组。您的列表内容未连接到实际记录。您甚至不能假设列表条目是记录名称。您需要手动订阅列表中的每个记录名称以获取其内容更新。
这个建议是由 wolfram 和 phillipp 共同提出的:
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
}
}
}
效果很好。谢谢你们。
deepstream中是否可以使用列表订阅数据?似乎对数据的更改不会触发 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 );
我被鼓励尝试使用列表的新方法,但我不清楚如何使用列表订阅数据本身的变化,除了以某种方式有某种 "generic" 或 "global" 订阅,我不确定是否可行。
或者有什么方法可以使用匿名记录进行订阅吗?
列表只是字符串数组。您的列表内容未连接到实际记录。您甚至不能假设列表条目是记录名称。您需要手动订阅列表中的每个记录名称以获取其内容更新。
这个建议是由 wolfram 和 phillipp 共同提出的:
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
}
}
}
效果很好。谢谢你们。