Мне нужна база данных на основе подписки, в которой у меня могут быть обратные вызовы при изменении данных (я буду использовать их только для моих тестов). Я использовал gunDB, и он работает только так:Основанная на подписке база данных nosql in-memory
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.put
и gun2.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 });
Ive использует Reddis в прошлом в php, отлично работал! Вероятно, доступный в nodejs –
@AndrewDonovan главный недостаток заключается в том, что вам нужно запустить сервер Redis. И я буду использовать его только для тестов, поэтому для меня это накладно. –