私はCouchDBのインスタンスを2つ持ち、それぞれ別のインスタンスを複製します。ここで問題となるのは、新しいデータベースが作成されるたびに、新しく作成されたデータベースと複製用の_replicator文書を作成するPOSTを監視する必要があることです。CouchDBは新しく作成されたデータベースを自動複製します
_replicator文書の挿入をトリガーせずに、データベース全体を簡単に複製する方法はありますか?
私はCouchDBのインスタンスを2つ持ち、それぞれ別のインスタンスを複製します。ここで問題となるのは、新しいデータベースが作成されるたびに、新しく作成されたデータベースと複製用の_replicator文書を作成するPOSTを監視する必要があることです。CouchDBは新しく作成されたデータベースを自動複製します
_replicator文書の挿入をトリガーせずに、データベース全体を簡単に複製する方法はありますか?
これはわかりません。私は似たようなものがあります。私は変更通知を聞くために小さなノードアプリケーションを書いた。新しいデータベースを作成すると、変更通知はノードアプリケーションに通知し、ノードアプリケーションはそれ以外のもの、たとえば複製を作成します。ここ
OK]をクリックして、ドイツ語、コメントを気の毒に私のコードの抜粋です:)
/**
* 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