我有兩個CouchDB實例,每個都複製另一個實例。這裏的問題是每次創建一個新的數據庫時,我需要注意新創建的數據庫和POST以創建_replicator文檔進行復制。CouchDB自動複製新創建的數據庫
有沒有辦法輕鬆地複製整個數據庫從一個到另一個沒有觸發插入_replicator文件?
我有兩個CouchDB實例,每個都複製另一個實例。這裏的問題是每次創建一個新的數據庫時,我需要注意新創建的數據庫和POST以創建_replicator文檔進行復制。CouchDB自動複製新創建的數據庫
有沒有辦法輕鬆地複製整個數據庫從一個到另一個沒有觸發插入_replicator文件?
不是我知道的。我有類似的東西。我寫了一個小節點應用程序來聽更改通知。如果我創建了一個新數據庫,那麼更改通知會通知我的節點應用程序,然後節點應用程序會創建其他所有內容,例如複製。
確定這裏是我的代碼片段,比較遺憾的是德國的意見:)
/**
* In die Log-Datei der CouchDB einen neuen
* Eintrag hinzufügen.
*
* @param msg
*
* @author Robert Gregat
*/
var log = function(msg) {
console.log(JSON.stringify(["log", msg]));
};
/**
* Dies ist eine Funktion die aus dem nano Node Module entnommen
wurde.
*
* @author https://github.com/dscape/nano
*/
function _serializeAsUrl(db) {
if (typeof db === 'object' && db.config && db.config.url && db.config.db) {
return urlResolveFix(db.config.url, encodeURIComponent(db.config.db));
} else {
return db;
}
}
// CouchDB stellt eine API bereit die über stdin Befehle entgegen
nimmt.
var stdin = process.openStdin();
// Das Encoding auf utf8 einstellen.
stdin.setEncoding('utf8');
// Auswerten von empfangenen Daten der CouchDB. Wenn eine neue
Datenbank angelegt wurde, enthält das
// JSON Objekt den value created. Tritt dieser Fall ein, wird
automatisch aus der design und custom db
// alle Dokumente in die neue Datenbank repliziert.
stdin.on('data', function(d) {
// Parsen des Ergebnis
if (d !== null) {
parsedData.push(JSON.parse(d));
}
});
/**
* Die Applikation muss in einer Endlosschleife laufen.
*
* @author Robert Gregat
*/
var checker = function() {
for (var index in parsedData) {
if (parsed.type === "created" && parsed.db !== "design" && parsed.db !== "custom") {
// do stuff
}
}
parsedData = [];
setTimeout(checker, 1000);
}
// Endlosschleife starten.
checker();
功能日誌可以幫助我做一些記錄到couchdb.log文件。
函數_serializeAsUrl是從節點模塊nano中進行某種格式化的函數。
隨着process.openStdin()我開始偵聽從couchdb發出的事件。
使用stdin.on()我可以捕獲發射的事件。
函數檢查器接收收集的事件並根據所提供的信息做我想做的事(此函數必須處於無限循環中)。
在CouchDB的配置,你必須添加以下內容:
[update_notification]
[name] = nodejs [path/to/your/node_application]
欲瞭解更多信息,採取在這個網站一看:http://docs.couchdb.org/en/1.6.1/config/externals.html
的任何可能性,分享您的代碼以收聽新分貝變化? – CIF
對不起,我遲到了,我有很多事情要做。查看我的新答案,獲取一些提示,以編寫一個小節點應用程序來偵聽CouchDB中新創建的數據庫。 – Sceada