2017-03-19 8 views
1

ディープストリームでは、リストを使用してデータを購読できますか?データの変更は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); 

私はリストを使用して新しいアプローチを試みることが奨励されていますが、私は、リストを使用して、データ自体の変更をサブスクライブするかどうかは不明確だ、何とかを除いて、「一般的な」または「グローバル」のいくつかの並べ替えを持っています購読することはできません。

または、匿名レコードを使用して登録できる方法はありますか?

答えて

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

これは素晴らしい作品。あなたがた両方に感謝します。

関連する問題