@1ax3l
Web Developer

Как это работает?

Как это вообще работает?
Хочу присвоить json массиву значение, но в итоге ничего не получается...

app.get('/chat/:chat', (req, res) => {
    const chat = req.params.chat;
    const json = {};

    bot.telegram.getChat(chat).then((info) => {
        json.success = true;
        json.info = info;
    }).catch((error) => {
        json.success = false;
        json.info.error = error.code;
        json.info.method = error.on.method;
        json.info.description = error.description;
    });

    res.json(json);//null
});
  • Вопрос задан
  • 167 просмотров
Решения вопроса 1
Negezor
@Negezor
Senior Shaurma Developer
Вы путаете синхронный код и асинхронный, вызов bot.telegram.getChat() немедленно возвращает Promise и ваш код по этому уже отправил ответ. Вот как нужно сделать:
app.get('/chat/:chat', (req, res) => {
    const chat = req.params.chat;
    const json = {};

    bot.telegram.getChat(chat).then((info) => {
        json.success = true;
        json.info = info;

        res.json(json);
    }).catch((error) => {
        json.success = false;
        json.info.error = error.code;
        json.info.method = error.on.method;
        json.info.description = error.description;

        res.json(json);
    });
});

Или как можно сделать это по современному:
app.get('/chat/:chat', async (req, res) => {
	const { chat } = req.params;
	const json = {};

	try {
		const info = await bot.telegram.getChat(chat);

		json.success = true;
		json.info = info;
	} catch (error) {
		json.success = false;
		json.info.error = error.code;
		json.info.method = error.on.method;
		json.info.description = error.description;
	}

	res.json(json);
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы