Передать переменную из 1 функции в другую. Puppeteer,ReactJS,express
Пишу функцию которая будет получать переменную page(и browser) в 1 функции,при помощи callback передавать её в другую функцию. В данный момент остановился на проблеме её передачи,так как задать глобально переменную не выйдет(это нарушит мой дальнейший план связанный с многопоточностью приложения). Если кто знает - помогите,как я могу это сделать?
router.post(
'/check',
[check('user_login', 'Некорректный логин').isLength({ min: 3 })],
async function checkdata(req, res) {
try {
console.log('Login body:', req.body);
let browser = await puppeteer.launch({
devtools:true,
});
let page = await browser.newPage()
await page.goto('https://google.com')
await page.type('input[name=q]',req.body.user_login)
await page.screenshot({path:'loximi.png'})
res.json({ message: 'completed' });
return new Promise (async (resolve)=>{
resolve(page);
})
} catch (e) {
console.log(e.message);
res
.status(500)
.json({ message: 'Что-то пошло не так, попробуйте снова' });
}
}
);
// /api/auth/register
router.post(
'/register',
[
check('user_login', 'Некорректный логин').isLength({ min: 3 }),
check('user_password', 'Минимальная длина пароля 6 символов').isLength({
min: 6,
}),
],
async (req, res) => {
try {
console.log('Password body:', req.body);
console.log(checkdata())
await page.type('input[name=q]', checkdata())
res.json({ message: 'completed' });
} catch (e) {
console.log(e.message);
res
.status(500)
.json({ message: 'Что-то пошло не так, попробуйте снова' });
}
}
);
Ответы (1 шт):
Автор решения: Maksim Oleseiuk
→ Ссылка
Всё оказалось проще. Сделал привязку к сессии создав hash.
var createHash = require('hash-generator');
let session = createHash(12);
И потом задал переменные в самих post запросах которые будут использоваться в роутах.
//задаем переменную
app.set(`login_${session}`, user_login);
//вызываем её в других роутах
app.get(`login_${session}`);
Переменную session передаю через react в каждый роут,и таким образом всё работает