通过Node.js启动MongoDB然后连接

时间:2016-07-24 19:47:58

标签: node.js mongodb

我想通过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')
  })
})

1 个答案:

答案 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参数。