2

我需要基于订阅的内存数据库,我可以在其中对我的数据更改进行回调(我只会将它用于我的测试)。我使用gunDB,它只能这样工作:

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

当我交换它gun1.putgun2.get不起作用时。这意味着在没有密钥之前我无法真正订阅。这个例子不起作用(回调永远不会被调用):

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 });
4

1 回答 1

2

创建单独/多个 GUN 实例没有用或没有必要。

如果您只使用 1 个 GUN 实例,一切正常:

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

它也适用于 NodeJS。

val返回给您的对象是一个安全复制的快照,改变它不会影响数据库状态

我希望这是有帮助的。

于 2016-05-13T01:47:50.450 回答