如何在subprocess间共享一个mongoose连接?

我有以下db.js模块,照顾mongoose的连接:

'use strict'; module.exports = function(config) { var mongoose = require('mongoose'); //mongoose.connect(config.connectionString); var db = mongoose.connection; db.open(config.server, config.database, config.port, {user: config.user, pass: config.password}); db.on('error', console.error.bind(console, 'connection error:')); db.once('open', console.log.bind(console, 'connected to database server ' + config.server)); }; 

在我的app.js中,我简单地调用var db = require('./db')(config.db); ,在我的应用程序中的所有模型运​​行良好。

对于一些后台作业,我分叉了一堆subprocess(使用worker-farm ),并且由于我不知道如何传递连接对象(或者甚至是否允许),我在每个连接对象中打开一个连接db.js)。

问题是,过了一段时间,我开始经历每个subprocess的{ [Error: Trying to open unclosed connection.] state: 1 } 。 此外,由于这会在这些subprocess中引起一个意想不到的攻击,所以worker-farm会重新启动它们 – 这一切都陷入了一个巨大的无限循环(是的,我可以解决循环 – 但我宁愿解决问题:)) 。

我究竟做错了什么? 在一群工人之间分享mongoose的最佳方式是什么?

Interesting Posts