我应该在每次 query/insert 之后 open/close 数据库连接吗?
Should I open/close database connection after every query/insert?
大家好,我最近几天使用 nodejs 开发了一个简单的应用程序,并将此函数创建到来自 mongodb
的 return 客户端实例
const mongodb = require("mongodb");
const { db } = require("../config/env");
const conection = async () => {
try {
const client = await mongodb.MongoClient.connect(db.uri, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
return client;
} catch (error) {
throw error;
}
};
module.exports = conection;
我为访问数据层和 return 记录创建了这个简单的函数
const index = async ({ limit = 10, offset = 0, filter = {} }) => {
const client = await conection();
if (filter._id) {
filter._id = mongodb.ObjectID(filter._id);
}
try {
const collection = client.db("api").collection("user");
const data = await collection
.find({ ...filter })
.skip(offset)
.limit(limit)
.toArray();
return data;
} catch (error) {
throw new Error(error);
} finally {
await client.close();
}
};
我想知道我是否真的需要建立连接并在每次查询时关闭它,还是应该保持连接打开
注意:在这种情况下,我使用的是一个简单的 Atlas 集群(免费),但我想知道在使用 sql 像 postgres
这样的银行时是否也应该这样做
除非您要退出您的应用程序,否则不要关闭您的连接,然后确保您这样做了。确保您回来做更多事情时使用相同的连接 I/O。数据库连接是resource-intensive,应该尽量少建立,尽量共享。如果您不选择现有连接并出现连接池 运行 等奇怪错误,您也可能会遇到像 ODBC 这样的连接的中间件问题。了解您的连接器以及如何最有效地使用它,这将是有益的 activity :-)
您可以使用 mongoose 模块来管理 MongoDB。
安装
npm install mongoose
用法
mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true });
我相信 Mongoose 可以帮助您解决问题。
这样做是个好习惯。以便在每次操作(插入等)后关闭连接,并在每次操作(插入等)之前重新打开连接。
大家好,我最近几天使用 nodejs 开发了一个简单的应用程序,并将此函数创建到来自 mongodb
的 return 客户端实例const mongodb = require("mongodb");
const { db } = require("../config/env");
const conection = async () => {
try {
const client = await mongodb.MongoClient.connect(db.uri, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
return client;
} catch (error) {
throw error;
}
};
module.exports = conection;
我为访问数据层和 return 记录创建了这个简单的函数
const index = async ({ limit = 10, offset = 0, filter = {} }) => {
const client = await conection();
if (filter._id) {
filter._id = mongodb.ObjectID(filter._id);
}
try {
const collection = client.db("api").collection("user");
const data = await collection
.find({ ...filter })
.skip(offset)
.limit(limit)
.toArray();
return data;
} catch (error) {
throw new Error(error);
} finally {
await client.close();
}
};
我想知道我是否真的需要建立连接并在每次查询时关闭它,还是应该保持连接打开
注意:在这种情况下,我使用的是一个简单的 Atlas 集群(免费),但我想知道在使用 sql 像 postgres
这样的银行时是否也应该这样做除非您要退出您的应用程序,否则不要关闭您的连接,然后确保您这样做了。确保您回来做更多事情时使用相同的连接 I/O。数据库连接是resource-intensive,应该尽量少建立,尽量共享。如果您不选择现有连接并出现连接池 运行 等奇怪错误,您也可能会遇到像 ODBC 这样的连接的中间件问题。了解您的连接器以及如何最有效地使用它,这将是有益的 activity :-)
您可以使用 mongoose 模块来管理 MongoDB。
安装
npm install mongoose
用法
mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true });
我相信 Mongoose 可以帮助您解决问题。
这样做是个好习惯。以便在每次操作(插入等)后关闭连接,并在每次操作(插入等)之前重新打开连接。