Ich möchte die MongoDB über Node.js starten, um mir die Mühe zu ersparen, es jedes Mal manuell zu tun, aber ich bin unsicher, was die beste Methode zu verwenden ist oder wie man es einbaut und damit das Dilemma.MongoDB über Node.js starten und dann verbinden
Ich glaube der Grund, dass dieser Code nicht funktioniert (ECONNREFUSED) ist, dass die mongod.exe nicht genug Zeit zum Starten gegeben hat. Wenn das stimmt, was wäre die beste Methode dafür? Eine Art Schleife? Irgendwie den Status der DB prüfen? Eine Art synchroner Timer?
Im Idealfall sollte der Server zuerst prüfen, ob die MongoDB bereits läuft, bevor sie versucht wird, sie zu starten, und ob sie nach so vielen Versuchen, etwas anderes zu tun, nicht startet und sich verbindet. Das klingt für mich nach einem guten Plan, aber ich weiß leider nicht, wo ich anfangen soll.
Ich bin wirklich neu in der Programmierung, und ich bin vielleicht ein wenig zu ehrgeizig mit meinen Zielen ... wenn ich etwas falsch mache, bitte lass es mich wissen.
const express = require('express');
const bodyParser= require('body-parser');
const app = express();
const MongoClient = require('mongodb').MongoClient
const execFile = require('child_process').execFile;
app.use(bodyParser.urlencoded({extended: true}))
var db
execFile("C:/Program Files/MongoDB/Server/3.2/bin/mongod.exe", ['--version'], (error, stdout, stderr) => {
if (error) {
throw error;
}
console.log(stdout);
});
MongoClient.connect('mongodb://localhost:27017/db', (err, database) => {
if (err) return console.log(err)
db = database
app.listen(3000, function() {
console.log('listening on 3000')
})
})
Oh wow! Wenn Sie nur den Parameter'version 'löschen, funktioniert es! Ich hatte gedacht, dass der Parameter nur einige zusätzliche Informationen auf der Konsole angezeigt und nichts mehr. – Dimitto
Wissen Sie, ob es sich lohnt, zuerst zu prüfen, ob MongoDB bereits läuft? – Dimitto
Ja, sicher, Sie könnten. Der obige Code stellt lediglich sicher, dass Sie zuerst die Datenbank ausführen und dann eine Verbindung herstellen. –