如何在一个Angular应用程序中访问两个Mongo数据库?

时间:2018-08-22 04:02:40

标签: javascript node.js angular mongodb

此刻,我正在运行一个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
});

1 个答案:

答案 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...')
})