此刻,我正在运行一个MEAN堆栈应用程序,该应用程序正在使用一个名为mydb-1
的Mongo数据库。
我正在本地主机和命令行上运行此命令,我正在运行以下命令:
node bin\www --mongoURL mongodb://localhost:27017/mydb-1
除了此Mongo数据库-mydb-1
,我现在需要在同一应用程序中访问另一个名为mydb-2
的Mongo数据库。
到目前为止,我一直在使用上述命令行语句来访问mydb-1。
我现在需要做什么,以便我的应用程序在命令行时也能同时看到mydb-1和mydb-2 Mongo数据库,即:
node bin\www --mongoURL mongodb://localhost:27017/mydb-1, mydb-2
此刻,我在以下位置使用npm包express-mongo-db:
https://www.npmjs.com/package/express-mongo-db
建立mongodb连接的地方。
对于一个mongo数据库,我的代码类似于以下代码。
var app = require('express');
var expressMongoDb = require('express-mongo-db');
app.use(expressMongoDb('mongodb://localhost:27017/mydb-1'));
app.get('/', function (req, res, next) {
req.db // => Db object
});
答案 0 :(得分:1)
您不能使用正在使用的 express-mongo-db 软件包来做到这一点。根据它的规范,它仅支持到特定数据库的连接,而不支持您想要的多个数据库。无论如何,您可以仅使用标准的 mongodb 和 express 模块来实现此目标,就像这样:
const app = require('express')();
const MongoClient = require('mongodb').MongoClient;
// URL to the root of MongoDB Server and not a particular db
const url = 'mongodb://localhost:27017';
// Database Names
const dbName1 = 'myproject1';
const dbName2 = 'myproject2';
// Use connect method to connect to the server
MongoClient.connect(url, function(err, client) {
console.log("Connected successfully to mongo server");
const db1 = client.db(dbName1);
const db2 = client.db(dbName2);
app.get('/data/db1', function(req, res) {
var collection = db1.get().collection('collectionName')
collection.find().toArray(function(err, docs) {
res.render('dataPage', {dataFromDB1: docs})
})
});
app.get('/data/db2', function(req, res) {
var collection = db2.get().collection('collectionName')
collection.find().toArray(function(err, docs) {
res.render('dataPage', {dataFromDB2: docs});
});
});
});
app.listen(3000, function() {
console.log('Listening on port 3000...')
})