Express.js: создать дополнительную БД mongodb в контроллере - PullRequest
0 голосов
/ 24 октября 2018

Я новичок в 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 голосов
/ 25 октября 2018

Вы можете создать новое соединение

mongoose.connect('URI_FOR_ANOTHER_DATABASE')

Но создавать новые соединения - плохая идея, поэтому у драйвера есть возможность использовать существующие соединения для запроса другой базы данных, для этой цели вы можете проверить useDb()метод, как показано здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...