2016-05-12 9 views
2

データの変更時にコールバックを行うことができるサブスクリプションベースのインメモリデータベースが必要です(テスト用にのみ使用します)。私はgunDBを使用し、それだけでこのように動作します:私はgun1.putgun2.getを交換するときサブスクリプションベースのnosqlインメモリデータベース

var Gun = require('gun'); 
var key = 'something_long'; 
var state = { a: 1, b: 2 }; 
var gun1 = Gun(); 
var gun2 = Gun(); 

gun1.put(state).key(key); 

gun2.get(key).on(function(val) { 
    console.log('Value for gun2 (using ".on") is: '); 
    console.dir(val); 
}); 

が、それは動作しません。これは、キーがない限り、私が実際に購読することができないことを意味します。この例は、(コールバックが呼び出されることは決してありません)動作しません。

var Gun = require('gun'); 
var key = 'something_long'; 
var state = { a: 1, b: 2 }; 
var gun1 = Gun(); 
var gun2 = Gun(); 

gun2.get(key).on(function(val) { 
    console.log('Value for gun2 (using ".on") is: '); 
    console.dir(val); 
}); 

gun1.put(state).key(key); 

私はすべての利用可能なインメモリ・データベースとあまり慣れていないんだ、と誰もが何かを提案することができれば、私は感謝しています。

同じ例がfirebaseために働く:

var Firebase = require('firebase'); 
var statesRef = new Firebase('https://******.firebaseio.com/states'); 
var statesRef2 = new Firebase('https://******.firebaseio.com/states'); 

var key = 'something_very_long'; 
var data = { a: 1, b: 2 }; 

statesRef2.on('value', function(dataSnapshot) { 
    console.dir(dataSnapshot.val()); 
}); 
statesRef.set({ key: key, state: data }); 
+0

Iveは過去にReddisを使ってPHPで作業しました。おそらく、ノードスで利用可能です。 –

+0

@ AndrewDonovan主な欠点は、Redisサーバーを実行している必要があることです。そして、私はテストのためだけにそれを使用します。だから、私にとってはちょっとオーバーヘッドです。 –

答えて

2

別/複数GUNインスタンスを作成有用または必要ではありません。また、NodeJSで働く

http://jsbin.com/yorujufofe/edit?js,console

:あなただけの1つのGUNインスタンスを使用する場合

すべてが動作します。

返されたオブジェクトvalは、安全コピーされたスナップショットです。は、データベース状態には影響しません。

私はこれが役に立ちそうです。

関連する問題