Nodejs делят один и тот же инициированный класс с суб-маршрутами - PullRequest
0 голосов
/ 25 августа 2018

У меня есть структура папок, подобная этой

.
├── models
│   └── System.js
└── src
    ├── app.js
    ├── index.js
    └── routes
        ├── lemon
        │   ├── auth
        │   │   └── index.js
        │   └── index.js
        └── index.js

.

/ модели / System.js

class System {
    constructor() {
        this.test = null;
    }
}

module.exports = System

.

/ SRC / app.js

const express = require("express");
const _System = require("../models/System");

const app = express();

var System = new _System();
System.test = 1;

//..... other codes

.

/ SRC / маршруты / лимон / авт / index.js

const express = require("express");
const _System = require("../../../../models/System");

const router = express.Router();

console.log(_System.test); //returns null

router.get('/', (req, res) => {
    res.send("Hello World");
});

module.exports = router;

.

Моя структура папок выглядит следующим образом, и я пытаюсь поделиться значением System.test = 1 , определенным в / app.js до / route / lemon / авториз / index.js . Но я не смог этого сделать, и он всегда возвращает ноль.

В любом случае можно ли использовать один и тот же класс init для под маршрутов?

PS: я знаю, что мой код неправильный, и я много искал. Я не очень хорошо понимаю английские ресурсы в данный момент, но я действительно искал это.

Ответы [ 2 ]

0 голосов
/ 25 августа 2018

Не самый элегантный или масштабируемый, но;

global.System =  new _System();

Вы можете использовать System в любом месте.

0 голосов
/ 25 августа 2018

Это не работает, потому что System.js возвращает класс, а не экземпляр или объект.Поэтому, когда var System = new _System(); System.test = 1; выполняется в app.js, экземпляр является локальным для модуля приложения и не используется совместно с маршрутом.

Если вы хотите поделиться каким-либо файлом конфигурации между различными модулями, вы можетеопределите ваш System модуль как простой объект:

'use strict' // <-- this is good practice to be more rigoreous

const System = {
    test: 1
};

module.exports = System;
...