订阅数据的深层列表

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
        }
    }
}

效果很好。谢谢你们。