gpt4 book ai didi

node.js - 带有 createConnection 的 Mongoose 连接事件

转载 作者:搜寻专家 更新时间:2023-10-31 22:45:47 25 4
gpt4 key购买 nike

我不再使用默认连接,而是使用显式定义的连接。

除了跟踪我的 mongo 连接状态的事件处理程序都没有触发外,我的代码可以正常工作。

当我使用默认的 mongoose 连接时,事件曾经触发。 (mongoose.connect).

var mongoose = require('mongoose'),
logger = require('../logger'),
config = require('../config');

mongoose.connection.on('connecting', function(){
logger.info("trying to establish a connection to mongo");
});

mongoose.connection.on('connected', function() {
logger.info("connection established successfully");
});

mongoose.connection.on('error', function(err) {
logger.error('connection to mongo failed ' + err);
});

mongoose.connection.on('disconnected', function() {
logger.log('mongo db connection closed');
})

var gracefulExit = function() {
db.close(function(){
logger.log("mongoose connection with db " + server + 'is closing');
process.exit(0);
});
};

process.on('SIGNT', gracefulExit).on('SIGTERM', gracefulExit);

var db = mongoose.createConnection(config.get('DB_URL'));
module.exports = db;

代码的问题是

  1. 所有事件处理程序均未触发。
  2. 甚至 SIGNT 和 SIGTERM 上的进程事件也没有触发。

我也试过

var db = mongoose.createConnection(config.get('DB_URL'));

db.on('connecting', function(){
logger.info("trying to establish a connection to mongo");
});

但这也不会触发。

最佳答案

我也遇到过这个问题,
最后我解决了它,在了解 connect()/createConnection() 在我声明事件处理程序之前执行之后。所以我的 openconnected 事件处理程序将永远不会再次调用。

所以首先声明它们并在尝试连接之后 - 将解决您的问题!

例如:

try {
mongoose.connection
.on('error', err => {
console.error(err);
})
.on('open', err => {
console.log(`DB connected`);
})

await mongoose.connect('mongodb://localhost:27017/test', { useNewUrlParser: true });
} catch (error) {
handleError(error);
}

关于node.js - 带有 createConnection 的 Mongoose 连接事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24100119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com