Простой запрос get с помощью node.js и экспресс
Я перепробовал все и не могу понять, что я делаю неправильно. У меня нет проблем с отправкой данных с клиента на сервер, но, наоборот, я не могу заставить их работать.
Единственный ответ, который я получаю в моем клиенте, ReadableByteStream {}
,
Это мой код на клиенте:
export function getAllQuestionnairesAction(){
return (dispatch, getState) => {
dispatch(getAllQuestionnairesRequest());
return fetch(API_ENDPOINT_QUESTIONNAIRE)
.then(res => {
if (res.ok) {
console.log(res.body)
return dispatch(getAllQuestionnairesSuccess(res.body));
} else {
throw new Error("Oops! Something went wrong");
}
})
.catch(ex => {
return dispatch(getAllQuestionnairesFailure());
});
};
}
Это мой код на сервере:
exports.all = function(req, res) {
var allQuestionnaires = [];
Questionnaire.find({}).exec(function(err, questionnaires) {
if(!err) {
console.log(questionnaires)
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify({ a: 1 }));
//res.json(questionnaires)
}else {
console.log('Error in first query');
res.status(400).send(err);
}
});
}
1 ответ
Решение
Я делаю некоторые догадки здесь, так как я не уверен, какой вкус fetch
вы в настоящее время используете, но я попробую на основе стандартной реализации fetch
,
response
в разрешении fetch
как правило, не имеет непосредственно читаемого .body
, Смотрите здесь для некоторых простых примеров.
Попробуй это:
export function getAllQuestionnairesAction(){
return (dispatch, getState) => {
dispatch(getAllQuestionnairesRequest());
return fetch(API_ENDPOINT_QUESTIONNAIRE)
.then(res => {
if (res.ok) {
return res.json();
} else {
throw new Error("Oops! Something went wrong");
}
})
.then(json => {
console.log(json); // response body here
return dispatch(getAllQuestionnairesSuccess(json));
})
.catch(ex => {
return dispatch(getAllQuestionnairesFailure());
});
};
}