[英]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.