NodeJS - экспресс + мангуст + BAL с одним соединением - PullRequest
0 голосов
/ 15 марта 2019

Я новичок в NodeJS, и я установил новое приложение express с mongoose, и я много читал о том, как управлять подключением к БД в этом приложении.

Я читал, что лучше всего настроить соединение с app.locals экземпляра express, и это хорошо, но мой код выглядит как нечто сложное и сложное в обслуживании.

В каждой конечной точке мне нужно вставить эту первую строку:

 const db = req.app.locals.db;

И код выглядит так:

const create = async (req, res) => {
    const db = req.app.locals.db;

    const sysUserModel = {
        email: req.body.email,
        password: req.body.password,
        firstName: req.body.firstName,
        lastName: req.body.lastName,
    };

    const model = new db.models.sys_user(sysUserModel);
    const sysUser = await model.save();

    res.json({
        status: true,
        data: sysUser
    });
};

Я хочу добавить слой доступа к бизнесу со службами для рефакторинга моего кода и предотвращения развязки в моем коде, но я не могу найти ни одной статьи или сообщения в блоге об одномсоединение с экспресс-приложением и как добавить сервисы, которые используют соединение в качестве передового опыта.

Я думал о том, чтобы каждый раз передавать соединение db какому-то классу обслуживания, но, опять же, его было трудно поддерживать.

Как вы предлагаете решить эту проблему?

Спасибо.

1 Ответ

0 голосов
/ 15 марта 2019

Вам не нужен объект db напрямую для доступа к базе данных через mongoose.Вам просто нужен доступ к вашим моделям.Так что просто создайте отдельный каталог для моделей, и вы можете импортировать все модели в индексный файл внутри этого каталога.Теперь, когда вы хотите получить доступ к БД, вам просто нужно войти в папку моделей и получить доступ к базе данных оттуда.

Структура файла может выглядеть следующим образом: -

models/
  user.js // user model
  post.js // post model
  comment.js  // comment model
  index.js

index.js файл может выглядетькак этот

module.exports = {
 User: require("./user"),
 Post: require("./post"),
 Comment: require("./comment")
}

Файл, к которому вы хотите получить доступ к БД, может выглядеть следующим образом

const db = require(".../models");

const create = async (req, res) => {

    const sysUserModel = {
        email: req.body.email,
        password: req.body.password,
        firstName: req.body.firstName,
        lastName: req.body.lastName,
    };

    const user = new db.User(sysUserModel);
    const sysUser = await user.save();

    res.json({
        status: true,
        data: sysUser
    });
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...