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 kolemreplSetInitiatedatabázový příkaz.rs.add()poskytuje obal kolem některých funkcíreplSetReconfigdatabázový příkaz a odpovídající pomocník mongo shellrs.reconfig().rs.conf()zabalíreplSetGetConfigdatabá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);
});