gpt4 book ai didi

node.js - 何时使用 `mongoose.disconnect()` 或 `db.close()`

转载 作者:行者123 更新时间:2023-12-01 21:33:38 26 4
gpt4 key购买 nike

我是 MongoDB 的新手。现在我正在使用 Mongoose 来处理我的 express.js 应用程序中的数据库。我的问题是我不知道什么时候应该关闭连接?既然有人说最好关闭它,而其他人则说让它保持打开状态? db.close()mongoose.disconnect() 有什么区别?您使用这些的体验如何?

谢谢!

最佳答案

打开连接并在您的路线/服务之间共享该连接。您可以在开始 express 之前初始化数据库和所有相关模式。

import mongoose from 'mongoose';

// define models
import User from './user';
import Order from './order';

// connect to db
const connect = async () => {
await mongoose.connect(process.env.DATABASE_URL);

return mongoose.connection;
};

const models = { User, Order };

export { connect };

export default models;

然后在启动 Express 之前连接:

import models, { connect } from './models';
...

// connect to the db
const connection = await connect();

// now pass in the models to your routes
request('./routes/users')(models);
request('./routes/orders')(models);

// or use middleware so you can access in routes like req.models.user.find({})
app.use((req, res, next) => {
req.models = models;
next();
})

app.listen(process.env.PORT, () =>
console.log(`Example app listening on port ${process.env.PORT}!`),
);

您可以添加一个清理处理程序来监听 process.exit 并在那里关闭连接。大致是这样的:

const cleanUp = (eventType) => {
connection.close(() => {
console.info('closed');
});
};

[`exit`, `SIGINT`, `SIGUSR1`, `SIGUSR2`, `uncaughtException`, `SIGTERM`].forEach((eventType) => {
process.on(eventType, cleanUp.bind(null, eventType));
})

关于node.js - 何时使用 `mongoose.disconnect()` 或 `db.close()`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62294352/

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