gpt4 book ai didi

node.js - 在带有路由的 Express 应用程序中重用 MongoClient

转载 作者:可可西里 更新时间:2023-11-01 09:15:28 27 4
gpt4 key购买 nike

我想在我的 route 重用 MongoClient 连接(我已经看到有使用连接的方法,但是我想使用 MongoClient 并且我也想拥有一个单独的数据库配置文件

app.js(片段)

var route = require('route');
app.get("/", route.test);

数据库配置文件

var MongoClient = require('mongodb').MongoClient;
var mongourl = 'mongodb://localhost/test';
MongoClient.connect(mongourl, function(err, db) {
if(err) console.log('Error connecting to ' + mongourl + ': ' + err);
var coll = db.collection('testcollection');
});

route.js(片段)

exports.test = function(req, res) {
//i would like to use the connection created in dbconf.js here
}

最佳答案

您可以使用 promise 。这样连接只会打开一次,但您可以轻松地重用数据库对象。一个非常基本的版本看起来像这样:

数据库.js

var mongodb = require('mongodb'),
Q = require('q');

var MongoClient = mongodb.MongoClient;
var deferred = Q.defer();

MongoClient.connect('mongodb://localhost/test', function(err, database) {
if (err) {
deferred.reject(err);
return;
}
deferred.resolve(database);
});

exports.connect = function() {
return deferred.promise;
};

路由器.js

var database = require('./database');

exports.test = function(req, res) {
database.connect().then(function(db) {
var coll = db.collection('testcollection');
});
};

关于node.js - 在带有路由的 Express 应用程序中重用 MongoClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21043428/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com