【问题标题】:deepstream list subscribing to data订阅数据的深层列表
【发布时间】:2017-03-19 19:00:49
【问题描述】:

是否可以在深度流中使用列表订阅数据?似乎对数据的更改不会触发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 );

我被鼓励尝试使用列表的新方法,但我不清楚如何使用列表订阅数据本身的更改,除非以某种方式拥有某种“通用”或“全局”订阅,我我不确定是否有可能。

或者有什么方法可以使用匿名记录订阅吗?

【问题讨论】:

    标签: javascript node.js deepstream.io


    【解决方案1】:

    列表只是字符串数组。您的列表内容未连接到实际记录。您甚至不能假设列表条目是记录名称。您需要手动订阅列表中的每条记录名称以获取其内容更新。

    【讨论】:

      【解决方案2】:

      这个建议是由 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
              }
          }
      }
      

      这很好用。谢谢你们。

      【讨论】:

        猜你喜欢
        • 2023-03-04
        • 1970-01-01
        • 2019-03-25
        • 2020-11-28
        • 2018-11-18
        • 2016-05-30
        • 2014-04-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多