Я полагаю, что основная проблема заключается в том, что ваш res.json(images)
вызов находится внутри объявления app.post
, поэтому он будет срабатывать только в том случае, если клиент отправил запрос на сообщение /images
. Если вы удалите app.post и просто вызовите res.json в вашей последней .then
цепочке, это может сработать. Однако я не уверен, что ваш /tag
маршрут настроен правильно. Я не вижу причин для цепочки обещаний или отдельного маршрута /tag
и /image
, потому что единственный асинхронный вызов, который вы делаете, это client.taggedPosts
. Поэтому я бы порекомендовал вам определить свой маршрут /tag
, а затем поместить всю логику в этот маршрут следующим образом:
// API
app.post('/tag', function (req, res) {
const tag = req.body.tag;
if (!tag) {
return res.send('please provide a tag');
};
console.log('TAG', tag)
console.log('tumble api')
client.taggedPosts(tag, function(error, data) {
if(!data) {
console.log('tumble api error');
return res.send(error);
}
console.log('data recieved', data);
console.log('image to new variable')
const images = data;
console.log('sending images');
console.log('IMAGES', images);
res.send(images);
});
});
Функция handleSubmit()
на стороне клиента может быть обновлена для использования ответа /tag
следующим образом:
handleSubmit (event) {
event.preventDefault();
function sendTag () {
axios
.post('/tag', { tag: this.state.tag })
.then( function(images) {
console.log("AXIOS response:", images)
this.setState({images: images})
})
.then(function () {
console.log('state:', this.state);
})
.catch(function(error) {
console.log(error);
});
}
sendTag();
}