基于订阅的nosql内存数据库

Subscription based nosql in-memory database

本文关键字:内存 数据库 nosql 于订阅      更新时间:2023-09-26

我需要基于订阅的内存数据库,在那里我可以对我的数据更改进行回调(我将仅在测试中使用它)。我使用了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 });

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

如果你只使用1把枪,一切都会正常工作:

http://jsbin.com/yorujufofe/edit?js,控制台

它也适用于NodeJS。

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

我希望这会有所帮助。