Node.js从应用程序中运行MongoDB

我正在构build一个由NPM消费的组件。 应用程序需要连接到数据库。 如果用户没有在configuration文件中指定数据库uri的详细信息,我的应用程序应该在应用程序本身中创build一个mongoDB实例。

我看过很多关于如何将mongoDB集成到node.js,express,mocha和许多其他库的教程,但都连接到已经运行的外部数据库。

mongoDB服务器作为依赖关系的一部分被包含在内,所以安装了其他所有的东西,但是我在线上介绍了如何在应用程序启动时启动数据库。

任何帮助将不胜感激。 我怀疑信息是在那里,但我很难find它:(

你可以看看开始一个subprocess 。 所以让Node运行mongo作为外部程序。 这样你可以为任何适合这个标准的用户创build一个新的mongodb实例。 例如,可以使用节点"child process"库,并使用spawn函数通过在那里写入控制台命令来“产生”新的数据库实例,如Larry Turtis或这里的mongodb – 多个实例所述 。 它可能看起来像这样,启动实例:

 const spawn = require('child_process').spawn; const pipe = spawn('mongod', ['--dbpath=<LOCATION>', '--port', '<PORT>']) 

您可以使用以下命令将控制台输出传递给节点

  pipe.stdout.on('data', function (data) { printback(data.toString('utf8')); }); pipe.stderr.on('data', (data) => { printback(data.toString('utf8')); }); pipe.on('close', (code) => { callback('Process exited with code: '+ code); }); 

然后通过保持pipe道引用来杀死mongodb运行实例,然后执行以下操作:

 static end_pipe(pipe) { pipe.kill('SIGINT'); } 

启动mongoDB的命令可以在NPM的mongodb页面上find 。 添加--fork--logpath因为我假设你想在后台启动它。

 mongod --dbpath=/data --port 27017 --fork --logpath /var/log/mongod.log 

您可以将其作为npm start脚本的一部分包含在package.json中 :

 "scripts": {"start": "mongod --dbpath=/data --port 27017 --fork --logpath /var/log/mongod.log"} 
Interesting Posts