Mongoose 与集群的连接错误
Mongoose connection error with cluster
我遇到了节点问题。js/cluster 和 mongoose 连接。
我不确定我是否可以使用 mongoose 在同一个数据库上连接我的 Web 服务器的多个分支,是吗?
有一段我的代码:
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const helmet = require('helmet');
const mongoose = require('mongoose');
const http = require('http');
if (cluster.isMaster) {
const cpuCount = require('os').cpus();
cpuCount.forEach((cpu) => {
cluster.fork(); // fork web server
});
cluster.on('exit', (worker, code, signal) => {
... // log
cluster.fork(); // on dying worker, respawn
});
} else {
//express middleware
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(helmet());
... // express and global config
// The mongoose connection dit not work with cluster
mongoose.connect(__DB_URL__); // where __DB_URL__ = 'mongodb://database/test'
... //server config
const server = http.createServer(app);
server.listen
}
我可以 运行 这个服务器而不使用 cluster
(没有代码的第一部分)(或者使用 cluster
但没有猫鼬。 ..),当我运行这个服务器使用cluster
;工作人员没有崩溃但是猫鼬连接!!
这是 json 错误:
{ MongoError: failed to connect to server [database:27017] on first connect
at Pool.<anonymous> (/Users/...)
... // long path error
name: 'MongoError',
message: 'failed to connect to server [database:27017] on first connect' }
我真的可以在集群的每个分支中使用 mongoose 还是有其他解决方案?
试试这个对我有用....
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
//const helmet = require('helmet');
const mongoose = require('mongoose');
const cluster = require('cluster');
const http = require('http');
var dbURI = 'mongodb://localhost:27017/dal';
// Create the database connection
mongoose.connect(dbURI);
mongoose.connection.on('connected', function () {
console.log('Mongoose default connection open to ' + dbURI);
});
mongoose.connection.on('error',function (err) {
console.log('Mongoose default connection error: ' + err);
});
mongoose.connection.on('disconnected', function () {
console.log('Mongoose default connection disconnected');
});
// If the Node process ends, close the Mongoose connection
process.on('SIGINT', function() {
mongoose.connection.close(function () {
console.log('Mongoose default connection disconnected through app termination');
process.exit(0);
});
});
if (cluster.isMaster) {
const cpuCount = require('os').cpus();
cpuCount.forEach((cpu) => {
cluster.fork(); // fork web server
});
cluster.on('exit', (worker, code, signal) => {
cluster.fork(); // on dying worker, respawn
});
} else {
//express middleware
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
// app.use(helmet());
app.listen(3000, function(){
console.log(3000);
})
}
我遇到了节点问题。js/cluster 和 mongoose 连接。 我不确定我是否可以使用 mongoose 在同一个数据库上连接我的 Web 服务器的多个分支,是吗?
有一段我的代码:
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const helmet = require('helmet');
const mongoose = require('mongoose');
const http = require('http');
if (cluster.isMaster) {
const cpuCount = require('os').cpus();
cpuCount.forEach((cpu) => {
cluster.fork(); // fork web server
});
cluster.on('exit', (worker, code, signal) => {
... // log
cluster.fork(); // on dying worker, respawn
});
} else {
//express middleware
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(helmet());
... // express and global config
// The mongoose connection dit not work with cluster
mongoose.connect(__DB_URL__); // where __DB_URL__ = 'mongodb://database/test'
... //server config
const server = http.createServer(app);
server.listen
}
我可以 运行 这个服务器而不使用 cluster
(没有代码的第一部分)(或者使用 cluster
但没有猫鼬。 ..),当我运行这个服务器使用cluster
;工作人员没有崩溃但是猫鼬连接!!
这是 json 错误:
{ MongoError: failed to connect to server [database:27017] on first connect
at Pool.<anonymous> (/Users/...)
... // long path error
name: 'MongoError',
message: 'failed to connect to server [database:27017] on first connect' }
我真的可以在集群的每个分支中使用 mongoose 还是有其他解决方案?
试试这个对我有用....
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
//const helmet = require('helmet');
const mongoose = require('mongoose');
const cluster = require('cluster');
const http = require('http');
var dbURI = 'mongodb://localhost:27017/dal';
// Create the database connection
mongoose.connect(dbURI);
mongoose.connection.on('connected', function () {
console.log('Mongoose default connection open to ' + dbURI);
});
mongoose.connection.on('error',function (err) {
console.log('Mongoose default connection error: ' + err);
});
mongoose.connection.on('disconnected', function () {
console.log('Mongoose default connection disconnected');
});
// If the Node process ends, close the Mongoose connection
process.on('SIGINT', function() {
mongoose.connection.close(function () {
console.log('Mongoose default connection disconnected through app termination');
process.exit(0);
});
});
if (cluster.isMaster) {
const cpuCount = require('os').cpus();
cpuCount.forEach((cpu) => {
cluster.fork(); // fork web server
});
cluster.on('exit', (worker, code, signal) => {
cluster.fork(); // on dying worker, respawn
});
} else {
//express middleware
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
// app.use(helmet());
app.listen(3000, function(){
console.log(3000);
})
}