我想通过Node.js启动MongoDB以避免每次都必须手动执行此操作,但我不确定最佳使用方法是什么,或者就此而言,如何融入它,从而进入两难境地。
我认为此代码无效(ECONNREFUSED)的原因是mongod.exe没有足够的时间启动。如果是真的,围绕这个最好的方法是什么?某种循环?以某种方式检查数据库的状态?某种同步计时器?
理想情况下,服务器应首先检查MongoDB是否已经在运行之前是否已经运行,并且在尝试执行其他操作之后无法启动并连接。这对我来说听起来不错,但不幸的是我不知道从哪里开始。
我对编码很陌生,而且我的目标可能有点过于雄心勃勃......如果我做错了什么,请告诉我。
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')
})
})
答案 0 :(得分:1)
您可以等到mongodb
开始,然后连接。
这是示例
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')
})
})
});
同样在你的例子中你使用--version参数启动mongod,并且可能你的意图是启动db本身,对吗?所以只需删除--version
参数。