2017-02-02 4 views
0

Ich muss '/etc/init.d/mongod status' oder 'service mongod status' aus einem Knoten JS-Datei ausführen, um die Antwort in der Datenbank zu speichern.Überprüfen MongoDB Status in Knoten js

Wenn ich die oben genannten Befehle in der Befehlszeile ausführen, bekomme ich die folgende Antwort:

● mongod.service - SYSV: Mongo is a scalable, document-oriented database. 
    Loaded: loaded (/etc/rc.d/init.d/mongod) 
    Active: active (running) since Thu 2017-02-02 08:07:42 UTC; 3h 27min ago 
    Docs: man:systemd-sysv-generator(8) 
    Process: 793 ExecStart=/etc/rc.d/init.d/mongod start (code=exited, status=0/SUCCESS) 
Main PID: 1027 (mongod) 
    CGroup: /system.slice/mongod.service 
      └─1027 /usr/bin/mongod -f /etc/mongod.conf 

Allerdings möchte ich diesen Status in einer API-Antwort enthalten, dass ich schreibe. Wenn ein Benutzer meine API anfordert, möchte ich daher die mongoDB-Statusüberprüfung wie oben angezeigt zurückgeben.

Ich habe folgende Weise versucht:

router.get ('/ Status', function (REQ, res) {

var databaseCheck = service mongod status // not sure how to do this 
res.json({ 
    mongoResponse: '//to have the above status check response here' 
}); 

});

Ich bin neu zu all dem, so würde jede Hilfe geschätzt werden. Ich kann verstehen, dass mein Denken falsch ist - lassen Sie mich wissen, wenn es eine andere Möglichkeit gibt, dies zu tun

+0

senden Sie eine Dummy-Anfrage mit Ajax und wenn es fehlschlägt haben Sie den Status? – mnemosdev

+0

Gibt es keine Möglichkeit, es aus einer Datei zu tun? Ich habe keine Ajax vor – emisqwe

Antwort

0

Sie können nodejs Kind-Prozess-Modul verwenden, um einen Shell-Befehl wie von einem Terminal auszuführen. In einem Terminal würden Sie „Service mongod Status“, in dem NodeJS Kind-Prozess würden Sie das gleiche tun, indem Sie diesen Befehl als Argument für das Kind-Prozess ausführen Funktion setzen, etwa so:

const exec = require('child_process').exec; 
exec('service mongod status', (error, stdout, stderr) => { 
    if (error) { 
    console.error(`exec error: ${error}`); 
    return; 
    } 
    console.log(`stdout: ${stdout}`); 
    console.log(`stderr: ${stderr}`); 
}); 
+0

Ich bekomme Folgendes: SyntaxError: Unerwartete Token> auf diesem Teil 'stderr) => {' – emisqwe

+0

Sie haben vielleicht eine Nodejs-Version, die die neue Funktion Pfeilsyntax nicht unterstützt, ändern Sie die Pfeile mit einem normalen Javascript-Funktion exec ('Dienst mongod status', Funktion (Fehler, stdout, stderr) {...})); Wenn es Ihnen Fehler über die $ {stdout} und den Rest der Variablen mit dem $ gibt, ändern Sie einfach diese Notation mit der normalen String-Verkettung wie console.log ('stderr:' + stderr); Stellen Sie sicher, dass Sie die richtigen Zeichen verwenden, während Sie dies schreiben. Wenn Sie bemerken, dass Sie nicht einfach die Funktion kopieren können, weil es nicht verwendet, aber es verwendet ', die verschiedene Zeichen sind ... – mnemosdev

0

Try Code wie dies in Sie App:

db.serverConfig.isConnected(); 
Verwandte Themen