Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 每次保存模型后是否应关闭Mongoose连接?_Node.js_Mongodb_Express_Mongoose - Fatal编程技术网

Node.js 每次保存模型后是否应关闭Mongoose连接?

Node.js 每次保存模型后是否应关闭Mongoose连接?,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我正在使用Mongoose来管理我的DB模式。我在我的应用程序中的几个地方保存了我的模型。我想知道是否应该在每次查询之前和之后分别手动关闭和重新打开连接?我不确定对性能的影响 例如,在此createUser()中,数据库连接到,保存模型,然后关闭连接。每次调用createUser()时都会发生这种情况 函数createUser(){ mongoose.connect(process.env.DB_路径{ useNewUrlParser:true, useUnifiedTopology:正确, }

我正在使用Mongoose来管理我的DB模式。我在我的应用程序中的几个地方保存了我的模型。我想知道是否应该在每次查询之前和之后分别手动关闭和重新打开连接?我不确定对性能的影响

例如,在此
createUser()
中,数据库连接到,保存模型,然后关闭连接。每次调用
createUser()
时都会发生这种情况

函数createUser(){
mongoose.connect(process.env.DB_路径{
useNewUrlParser:true,
useUnifiedTopology:正确,
})
const db=mongoose.connection
db.once(“打开”,函数(){
const userSchema=new mongoose.Schema({
名称:String,
})
const UserModel=mongoose.model(“用户”,userSchema)
const user=新用户模型({
姓名:“约翰”,
})
user.save()。然后(()=>{
mongoose.connection.close()
})
})
}
或者,在应用程序的入口点保持连接活动,并在应用程序终止时关闭连接,这是一个更好的主意吗

//server.js
mongoose.connect(process.env.DB_路径{
useNewUrlParser:true,
useUnifiedTopology:正确,
})
// ...
process.on('SIGINT',()=>{
mongoose.connection.close(()=>{
进程退出(0);
});
});
我也想知道,如果使用另一个DB驱动程序,比如说MySQL,策略会改变吗?

根据本书

一般的最佳做法是在应用程序启动时打开连接,并使其保持打开状态。但是,有时您需要关闭连接。例如,如果您的应用程序正在关闭或重新启动,则需要手动关闭数据库连接,或者如果您运行的是单键脚本而不是持久应用程序,则需要手动关闭数据库连接

阅读文档中有关可以在连接字符串中设置的一些选项的部分,这是很好的

还有检查

根据mongoose文件:

autoReconnect-底层MongoDB驱动程序在与MongoDB失去连接时将自动尝试重新连接。除非您是一个非常高级的用户,希望管理自己的连接池

据我所知,这类问题取决于您的项目规模。

阅读所有参考资料后,您将为您的项目提供产品。

如果您在项目中的任何地方都需要,请保持联系!制作您的连接模块并在项目的入口点连接到它感谢@mohsen-是因为多次连接和断开连接的操作成本太高吗?此外,是否存在任何性能问题来保持连接的活动状态?