Jak jsou implementováni pomocníci pro správu sady replik?
rs.*
pomocníci pro správu sady replik
v mongo
shell jsou obaly pro příkazy MongoDB, které můžete odeslat z libovolného ovladače.
V dokumentaci MongoDB se můžete podívat, které příkazy každý pomocník shellu obaluje:
rs.initiate()
poskytuje obal kolemreplSetInitiate
databázový příkaz.rs.add()
poskytuje obal kolem některých funkcíreplSetReconfig
databázový příkaz a odpovídající pomocník mongo shellrs.reconfig()
.rs.conf()
zabalíreplSetGetConfig
databázový příkaz.
Všimněte si, že mongo
pomocníci shellu mohou provádět nějaké další ověření nebo manipulaci s konfiguracemi, protože jsou určeny k použití prostřednictvím interaktivního mongo
shell.
Můžete potvrdit, jak jsou implementováni pomocníci shellu, vyvoláním příkazu v shellu bez závorek na konci, např.:
> rs.initiate
function (c) { return db._adminCommand({ replSetInitiate: c }); }
Volání databázových příkazů sady replik z Node.js
Ekvivalentní logiku lze implementovat prostřednictvím rozhraní API ovladače Node.js pomocí 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);
});
});
Spíše než reimplementaci pomocníků sady replik v Node.js můžete vyvolat mongo
shell s --eval
příkaz ke spuštění pomocníka shellu (tip:include --quiet
potlačit zbytečné zprávy).
Například volání z aplikace Node:
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);
});