[英]Starting up MongoDB through Node.js and then connecting
我想通过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')
})
})
您可以等到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,并且大概是要启动数据库本身,对吗? 因此,只需删除--version
参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.