3 votes

Comment copier un document d'une base de données à une autre (couchDB) ?

Il semble que je doive charger un document JSON de couchDB sur le client, puis l'envoyer à une autre base de données couchdb afin de le copier d'une db à l'autre ? Ou existe-t-il une méthode côté serveur pour le faire ?

Référence http://docs.couchdb.org/en/latest/api/documents.html#copy-db-doc La commande de copie n'est pas un http standard et ne peut être utilisée que dans une seule base de données.

6voto

Kxepal Points 4569

Oui, COPY n'est possible que dans une seule base de données, mais vous pouvez répliquer un ou plusieurs documents :

curl -X POST http://localhost:5984/_replicate -H "Content-Type: application/json" -d '{"source": "db_a", "target":"db_b", "doc_ids": ["foo"]}'

Cependant, vous ne pouvez pas changer l'ID du document dans ce cas comme vous pouvez le faire avec COPY . Si vous en avez besoin, COPY d'abord, le répliquer et le supprimer dans la source si nécessaire. Trois appels HTTP API pour utiliser uniquement les méthodes côté serveur et ne pas charger le contenu du document sur le client - la décision de l'utiliser au lieu d'avoir une logique de copie sur le client vous appartient.

0voto

Juan Points 619

Utilisation de node.js et le demande module.

Pré : Le document de destination existe dans la BD. Le document d'origine existe dans la BD

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);        
}));
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X