Express.js:在控制器中创建其他mongodb数据库

时间:2018-10-24 20:40:03

标签: javascript node.js mongodb express mongoose

我是MongoDB的新手。

当我创建node.js服务器时,我仅使用一个数据库连接(在启动时,我连接到该数据库)。 但是想像一下:我有一个数据库,其中包含一些通用表,还有更多数据库-每个数据库都用于自定义客户端。

如何在运行时创建那些数据库?

start.js:

const mongoose = require("mongoose");

// import environmental variables from variables.env file
require("dotenv").config({ path: "variables.env" });

mongoose.connect(process.env.DATABASE);
mongoose.Promise = global.Promise;
mongoose.connection.on("error", err => {
  console.error(` → ${err.message}`);
});

require("./models/MaintenanceType");
require("./models/Maintenance");

const app = require("./app");
app.set("port", process.env.PORT || 7777);
const server = app.listen(app.get("port"), () => {
  console.log('started');
});

variables.env(示例):

NODE_ENV=development
DATABASE=mongodb://db:qwe123@sometest.server.com:412345/webtest
PORT=1234
SECRET=webtest
KEY=webtestcom

和控制器:

const mongoose = require("mongoose");
const Maintenance = mongoose.model("Maintenance");

exports.createMaintenance = async (req, res) => {
  const maintenance = await new Maintenance(req.body).save();
  // ALSO create a db and table if not exists for this client and use it somehow
  res.json(maintenance);
};

有可能吗?

1 个答案:

答案 0 :(得分:0)

您可以创建新的连接

value_in_both(list1,list2,value)

但是创建新连接不是一个好主意,因此驱动程序具有使用现有连接来查询另一个数据库的功能,为此,您可以检查here所示的mongoose.connect('URI_FOR_ANOTHER_DATABASE') 方法