У меня есть репликация, работающая в CouchDB, и я хочу обновить свой интерфейс, когда изменения будут переданы в целевую базу данных. Я читал об API базы данных _changes и нашел функцию couch.app.db.changes () в jquery.couch.js. Однако я не могу понять, как использовать эту функцию. Я предполагаю, что мне нужно настроить слушателя, но мои знания Javascript еще не таковы, какими должны быть.
К сожалению, документы в http://www.couch.io/page/library-jquery-couch-js-database даже не содержат список изменений ().
Может ли кто-нибудь помочь мне здесь, а также сообщить мне, для чего предназначен параметр options.
Вот код для рассматриваемой функции:
changes: function(since, options) {
options = options || {};
// set up the promise object within a closure for this handler
var timeout = 100, db = this, active = true,
listeners = [],
promise = {
onChange : function(fun) {
listeners.push(fun);
},
stop : function() {
active = false;
}
};
// call each listener when there is a change
function triggerListeners(resp) {
$.each(listeners, function() {
this(resp);
});
};
// when there is a change, call any listeners, then check for another change
options.success = function(resp) {
timeout = 100;
if (active) {
since = resp.last_seq;
triggerListeners(resp);
getChangesSince();
};
};
options.error = function() {
if (active) {
setTimeout(getChangesSince, timeout);
timeout = timeout * 2;
}
};
// actually make the changes request
function getChangesSince() {
var opts = $.extend({heartbeat : 10 * 1000}, options, {
feed : "longpoll",
since : since
});
ajax(
{url: db.uri + "_changes"+encodeOptions(opts)},
options,
"Error connecting to "+db.uri+"/_changes."
);
}
// start the first request
if (since) {
getChangesSince();
} else {
db.info({
success : function(info) {
since = info.update_seq;
getChangesSince();
}
});
}
return promise;
},