Wie werden die Replikat-Set-Admin-Hilfsprogramme implementiert?
Der rs.*
Replikat-Set-Admin-Helfer
im mongo
Shell sind Wrapper für MongoDB-Befehle, die Sie von jedem Treiber senden können.
Sie können sehen, welche(n) Befehl(e) jeder Shell-Helfer umschließt, indem Sie auf die MongoDB-Dokumentation verweisen:
rs.initiate()
stellt einen Wrapper umreplSetInitiate
bereit Datenbankbefehl.rs.add()
bietet einen Wrapper um einige der Funktionen vonreplSetReconfig
database-Befehl und den entsprechenden Mongo-Shell-Helferrs.reconfig()
.rs.conf()
umschließtreplSetGetConfig
Datenbankbefehl.
Beachten Sie, dass der mongo
Shell-Helfer können einige zusätzliche Validierungen oder Manipulationen von Konfigurationen vornehmen, da sie dazu bestimmt sind, über das interaktive mongo
verwendet zu werden Schale.
Sie können überprüfen, wie die Shell-Helfer implementiert sind, indem Sie den Befehl in der Shell ohne abschließende Klammern aufrufen, zB:
> rs.initiate
function (c) { return db._adminCommand({ replSetInitiate: c }); }
Aufrufen von Replikatsatz-Datenbankbefehlen von Node.js
Die entsprechende Logik kann über die Node.js-Treiber-API mit command()
:
// Rough equivalent of rs.initiate()
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
// Use the admin database for commands
var adminDb = db.admin();
// Default replica set conf
var conf = {};
adminDb.command({replSetInitiate: conf}, function(err, info) {
console.log(info);
});
});
Anstatt die Replica Set Helper in Node.js neu zu implementieren, könnten Sie einen mongo
aufrufen Shell mit --eval
Befehl zum Ausführen des Shell-Hilfsprogramms (Tipp:schließen Sie --quiet
ein um unnötige Meldungen zu unterdrücken).
Beispiel:Anruf von Ihrer Node-App aus:
var exec = require('child_process').exec;
var rsAdmin = exec('mongo --eval "var res = rs.initiate(); printjson(res)" --quiet', function (error, stdout, stderr) {
// output is in stdout
console.log(stdout);
});