Изменить nodejs маршрут с параметрами во время выполнения - PullRequest
0 голосов
/ 27 февраля 2020

Мне нужно изменить параметры маршрута во время выполнения в nodejs.

В моем коде я установил маршрут, используя:

const troutes = require('./src/routes/testroutes')(page,sessionId)
app.use('/teste' + sessionId, troutes)

Но во время выполнения иногда страница " msgstr "объектный параметр воссоздан и становится недействительным. Но параметр "sessionId" такой же, без изменений. Затем я создаю новую «страницу» и мне нужно переделать маршрут, потому что старый маршрут имеет недопустимую страницу. если я использую:

let page={newpage};
const troutes = require('./src/routes/testroutes')(page,sessionId);

Мои URL-адреса не работают, потому что маршрут использует старый недопустимый объект-параметр "page".

Как я могу удалить или изменить старый маршрут и использовать новый маршрут с новым объектом "page"?

// сервер. js

const express = require('express')
const app = express()
const server = require('http').Server(app)
const port = 3001
const host = 'http://localhost'
const callbackUrl = `${host}:${port}`;

let page={page};
let sessionId='sessionId';
const troutes = require('./src/routes/testroutes')(page,sessionId)
app.use('/teste' + sessionId, troutes)
....
});

// маршруты. js

const express = require('express');
const router = express.Router();
module.exports = function (page,sessionId) {
        router.get('/'+sessionId+'/getMyNumber', async (req, res) => {
            const cc = await page.evaluate(() => {
                return getMyNumber();
            });
            console.log(cc);
            res.send({ "data": cc });
        });

        return router;
    }

1 Ответ

0 голосов
/ 28 февраля 2020

, поскольку вы вызывали require('./src/routes/testroutes')(page,sessionId) метод только один раз в файле, он загружается только один раз. поэтому переданные параметры / инициализации внутри функции выполняются только один раз.

маршрутизатор, который инициализирован и возвращен, используется для дальнейшей обработки запроса. Поэтому новый запрос будет вызывать только метод маршрутизатора.

, если вы хотите страница должна быть динамической c, она будет работать, если вы переместите страницу внутри маршрутизатора, вместо передачи ее из функции-оболочки, как показано ниже.

const express = require('express');
const router = express.Router();
module.exports = function (sessionId) {
        router.get('/'+sessionId+'/getMyNumber', async (req, res) => {
             let page = {newPage}
            const cc = await page.evaluate(() => {
                return getMyNumber();
            });
            console.log(cc);
            res.send({ "data": cc });
        });

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