J’ai un script shell qui invoque
mongo --eval "db.copyDatabase('somedatabase', 'somedatabase_duplicate', 'sourcehost')"
copier une firebase database.
Actuellement, je suis obligé de faire la même chose depuis une application Node.JS. Appel
mongoCommand = `db.copyDatabase("somedatabase", "somedatabase_duplicate", "localhost")`; db.command(mongoCommand, function(commandErr, data) { if(!commandErr) { log.info(data); } else { log.error(commandErr.errmsg); } });
Resulsts toujours dans un message d’erreur “pas de telle commande”.
Éditez pour plus de clarté: L’utilisation de db.admin (). Command () entraîne le même problème et l’utilisation de la commande suggérée dans la description du lien , ici également.
Quelle est la bonne façon d’appeler cette commande ou, alternativement, de cloner une firebase database à partir de Node.JS?
Eh bien, vous essayez de copier la firebase database qui est une opération d’administration, donc vous devez vous occuper d’un compte administrateur. Encore une fois, copier la commande de firebase database est copydb
.
essayez d’exécuter cette commande dans shell, db.copyDatabase
et vous verrez la source de la commande.
essayer:
var assert = require('assert'); var MongoClient = require('mongodb').MongoClient; var url = 'mongodb://localhost:27017/test'; MongoClient.connect(url, function(err, db) { if (err) { console.log(err); } else { var mongoCommand = { copydb: 1, fromhost: "localhost", fromdb: "test", todb: "test_dup" }; var admin = db.admin(); admin.command(mongoCommand, function(commandErr, data) { if (!commandErr) { console.log(data); } else { console.log(commandErr.errmsg); } db.close(); }); } });