あるデータベースから別のデータベースにコピーするために、couchDB JSON ドキュメントをクライアントにロードしてから別のcouchdb データベースに投稿する必要があるようです。または、そうするためのサーバー側の方法はありますか?
参照 http://docs.couchdb.org/en/latest/api/documents.html#copy-db-doc コピー コマンドは非標準の http であり、1 つのデータベース内にのみ存在します。
あるデータベースから別のデータベースにコピーするために、couchDB JSON ドキュメントをクライアントにロードしてから別のcouchdb データベースに投稿する必要があるようです。または、そうするためのサーバー側の方法はありますか?
参照 http://docs.couchdb.org/en/latest/api/documents.html#copy-db-doc コピー コマンドは非標準の http であり、1 つのデータベース内にのみ存在します。
はい、COPY
ing は単一のデータベース内でのみ可能ですが、代わりに単一または複数のドキュメントを複製できます。
curl -X POST http://localhost:5984/_replicate -H "Content-Type: application/json" -d '{"source": "db_a", "target":"db_b", "doc_ids": ["foo"]}'
ただし、この場合、 のようにドキュメント ID を変更することはできませんCOPY
。これが必要な場合は、COPY
最初に文書化し、複製し、必要に応じてソースから削除してください。サーバー側のメソッドのみを使用し、ドキュメント コンテンツをクライアントに読み込まないための 3 つの HTTP API 呼び出し - クライアントにコピー ロジックを配置する代わりに、それを使用するかどうかはあなた次第です。
前: 宛先ドキュメントは DB に存在します。元のアタッチメントが DB に存在する
var originAttachment = 'somefile.txt'
var originDocId = '1somecouchdbid';
var origindb = 'http://localhost:5984/db1';
var destinationAttachment = 'somefile.txt'
var destinationDocId = '2somecouchdbid';
var desinationdb = 'http://localhost:5984/db2';
var uridestination = desinationdb + "/" + destinationDocId;
request(uridestination, function(err, res, body){
if(err){
throw err;
}
var doc = JSON.parse(body);
var origin = origindb + '/' + originDocId + '/' + encodeURIComponent(originAttachment);
var optionsOrigin = {
url: origin
};
var uridestination = desinationdb + '/' + destinationDocId + '/' + encodeURIComponent(destinationAttachment) + '?rev=' + doc._rev;
var optionDestination = {
url: uridestination,
method: 'PUT',
headers: {
'Content-Type': false
}
};
request(optionsOrigin)
.pipe(request(optionsDestination, function(err, res, body){
if(err){
throw err;
}
console.log(body);
}));
});