【发布时间】:2020-08-19 09:37:50
【问题描述】:
我正在使用 Mongoose 来管理我的数据库架构。我将模型保存在应用程序的几个位置。我想知道是否应该分别在每个查询之前和之后手动关闭和重新打开连接?我不确定性能影响。
例如在这个createUser() 中,数据库连接到,保存模型,然后关闭连接。每次调用 createUser() 时都会发生这种情况。
function createUser() {
mongoose.connect(process.env.DB_PATH, {
useNewUrlParser: true,
useUnifiedTopology: true,
})
const db = mongoose.connection
db.once("open", function () {
const userSchema = new mongoose.Schema({
name: String,
})
const UserModel = mongoose.model("User", userSchema)
const user = new UserModel({
name: "John",
})
user.save().then(() => {
mongoose.connection.close()
})
})
}
或者在应用程序的入口点保持连接处于活动状态并在应用程序终止时关闭它是一个更好的主意?
// server.js
mongoose.connect(process.env.DB_PATH, {
useNewUrlParser: true,
useUnifiedTopology: true,
})
// ...
process.on('SIGINT', () => {
mongoose.connection.close(() => {
process.exit(0);
});
});
我也很想知道,如果使用另一个数据库驱动程序,比如 MySQL,策略会改变吗?
【问题讨论】:
-
如果您在项目中的每一个地方都需要连接,请保持连接!
-
制作你的连接模块并在你的项目的入口点连接它
-
谢谢@mohsen - 是不是因为多次连接和断开连接太昂贵了?保持连接是否存在任何性能问题?
标签: node.js mongodb express mongoose