连接到(具有)node-mongodb-native 的池的正确方法
Correct way to connect to (a pool with) node-mongodb-native
对于 MongoDB,建议始终重复使用相同的数据库连接,并有一个连接池来支持某些并发性。
在 node-mongodb-native
1.x
中,您可以配置数据库和服务器对象,创建一个像这样的池:
var server = new Server(
config.host,
config.port,
{
auto_reconnect : true,
poolSize : 5 // <= here is the pool
}
);
var db = new Db(
config.database,
server
);
db.open(function(err, db) {
// ...
}
在 2.0
中,他们弃用了除 MongoClient
之外的所有连接:
MongoClient.connect(URI, callback);
在哪里添加池选项?我现在自动拥有一个游泳池吗?
对于 2.1
他们更进一步并建议使用生成器:https://mongodb.github.io/node-mongodb-native/2.1/reference/ecmascript6/connecting/
这是否再次有效地为每个操作使用单独的连接?使用池是否过时了?
MongoClient.connect
采用可选的 options
参数和 server
字段,可让您设置连接池的大小:
const options = {
server: {
poolSize: 10
}
};
MongoClient.connect(url, options, callback);
如果不指定,默认 poolSize
为 5。server
选项已记录 here。
对于 MongoDB,建议始终重复使用相同的数据库连接,并有一个连接池来支持某些并发性。
在 node-mongodb-native
1.x
中,您可以配置数据库和服务器对象,创建一个像这样的池:
var server = new Server(
config.host,
config.port,
{
auto_reconnect : true,
poolSize : 5 // <= here is the pool
}
);
var db = new Db(
config.database,
server
);
db.open(function(err, db) {
// ...
}
在 2.0
中,他们弃用了除 MongoClient
之外的所有连接:
MongoClient.connect(URI, callback);
在哪里添加池选项?我现在自动拥有一个游泳池吗?
对于 2.1
他们更进一步并建议使用生成器:https://mongodb.github.io/node-mongodb-native/2.1/reference/ecmascript6/connecting/
这是否再次有效地为每个操作使用单独的连接?使用池是否过时了?
MongoClient.connect
采用可选的 options
参数和 server
字段,可让您设置连接池的大小:
const options = {
server: {
poolSize: 10
}
};
MongoClient.connect(url, options, callback);
如果不指定,默认 poolSize
为 5。server
选项已记录 here。