【发布时间】:2021-11-28 12:00:45
【问题描述】:
我使用Node-Mongo-Native 并尝试设置全局连接变量,但我对两种可能的解决方案感到困惑。各位大神能帮我看看哪个好? 1. 解决方案(这很糟糕,因为每个请求都会尝试创建一个新连接。)
var express = require('express');
var app = express();
var MongoClient = require('mongodb').MongoClient;
var assert = require('assert');
// Connection URL
var url = '[connectionString]]';
// start server on port 3000
app.listen(3000, '0.0.0.0', function() {
// print a message when the server starts listening
console.log("server starting");
});
// Use connect method to connect to the server when the page is requested
app.get('/', function(request, response) {
MongoClient.connect(url, function(err, db) {
assert.equal(null, err);
db.listCollections({}).toArray(function(err, collections) {
assert.equal(null, err);
collections.forEach(function(collection) {
console.log(collection);
});
db.close();
})
response.send('Connected - see console for a list of available collections');
});
});
-
解决方案(在应用程序初始化时连接并将连接字符串分配给全局变量)。但我认为将连接字符串分配给全局变量不是一个好主意。
var mongodb; var url = '[连接字符串]'; MongoClient.connect(url, function(err, db) {
assert.equal(null, err); mongodb=db; } );
我想在应用初始化时创建一个连接并在整个应用生命周期内使用。
你们能帮帮我吗?谢谢。
【问题讨论】:
-
您可以制作一个仅包含数据库连接的文件,然后导入该连接变量并在需要时使用该导入变量
-
@UditKumawat 是的,我这样做了,但是 Node 的这个 mongo 库有一个用于连接的回调函数,我需要使用它,所以我需要再次等待它连接,然后启动我认为的应用程序。
-
您可以声明一个全局变量,然后在初始化连接变量后使用它
-
是的,我想过。但是,我遇到了这个Using Global Variables in Node.js
标签: node.js mongodb express node-mongodb-native