Как объединить путь маршрута, если файл в подкаталоге express - PullRequest
1 голос
/ 19 июня 2020

Вот моя структура папок

Проект

  • сервер. js
  • маршруты

    • auth

      • логин. js
      • регистрация. js
    • индекс. js

теперь мой сервер. js выглядит так

const express = require("express");


const app = express();
const registerRoutes = require("./routes/auth/register");
const registerAdminRoutes = require("./routes/auth/registerAdmin");
const loginRoutes = require("./routes/auth/login");

app.use("/api-frontend", registerRoutes);
app.use("/api-backOffice", verify.isAdmin, registerAdminRoutes);
app.use("/api-backOffice/auth", loginRoutes);

Как вы видите, я думаю, что это довольно грязный код Если у меня будет много маршрутов в будущем. Я хочу указать весь путь в index. js, тогда я хочу использовать что-то вроде моего server.js

app.use('/api', required(./routes))

Вот что я пытаюсь сделать

In routes / index . js Мне нужен весь маршрут

require("./auth/register");
require("./auth/login");

Я не уверен. Их что-то вроде требуется 1 раз и получить все файлы в папке, чтобы сделать его более чистым. хорошо, после попытки сделать что-то подобное, ошибка продолжает говорить в server.js

Router.use() requires a middleware function but got a Object

Вот мой пример регистра. js

const express = require("express");

const registerController = require("../../controllers/register");

const router = express.Router();

router.post(
  "/register-with-social",
  registerController.validate("createUser"),
  registerController.registerWithSocial
);

module.exports = router;

Как я могу объединить папку с маршрутами В 1 строку на сервере. js файл

1 Ответ

3 голосов
/ 19 июня 2020

Вы можете сделать что-то вроде этого:

routes / auth / register. js

*

router объект будет получен из server.js файла, и вы можете использовать здесь и укажите здесь все ваши маршруты для этого модуля.

const registerController = require("../../controllers/register");

module.exports = (router) => {

    router.post(
        "/api-frontend/register-with-social",
        registerController.validate("createUser"),
        registerController.registerWithSocial
    );
    // you can add more routes below if you want

}

routes / index. js

Загрузите сюда все файлы маршрутов module'a и экспортировать его.

module.exports = [
    // AUTH REGISTER : ROUTES URL
    require('./auth/register'),
    // AUTH LOGIN : ROUTES URL
    require('./auth/login'),
    
    // List all your routes of auth module
];

сервер. js

Вы можете инициализировать все свои маршруты из файла index.js, загрузить его и используйте его.

const express = require("express");
const app = express();
const router = express.Router();

// just created a function, 
// if you want to use direct code then you can
// if you want to store this function in any helper library then you can
async function bootstrap(uri, modules){
    const index = require(uri);
    for (let init of index) { await init(modules); }
}
bootstrap("./routes/index", router);

app.use('/api', router);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...