繁体   English   中英

在运行时使用参数更改 nodejs 路由

[英]Change nodejs route with params at runtime

我需要在运行时在 nodejs 中更改路由参数。

在我的代码中,我使用以下方法设置了一条路线:

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

但是,在运行时,有时会重新创建“页面”对象参数并使其无效。 但是“sessionId”参数是相同的,没有变化。 然后我创建一个新的“页面”并需要重新制作路线,因为旧路线的页面无效。 如果我使用:

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

我的网址不起作用,因为该路线使用旧的无效“页面”参数对象。

如何删除或更改旧路由并使用带有新“页面”对象的新路由?

//server.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;
    }

由于您在文件中只调用了require('./src/routes/testroutes')(page,sessionId)方法一次,所以它只加载一次。 所以在函数中传递的参数/初始化只执行一次。

初始化并返回的路由器用于进一步的请求处理。因此新请求只会触发路由器的方法。

如果您希望页面是动态的,如果您将页面移动到路由器内部,而不是从包装器函数传递它,它会起作用,如下所示。

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;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM