#javascript #reactjs #api #next.js #getstaticprops
Вопрос:
Я пытаюсь извлечь данные из моей размещенной базы данных. Сама база данных работает (я проверил ее в приложении swagger), но при вызове из формы API данные не отображаются.
import React from 'react';
export const getStaticPaths = async () => {
const res = await fetch('https://[server]/course');
const data = await res.json();
const paths = data.result.map(course => {
return {
params: { id: course._id.toString() }
}
})
return {
paths,
fallback: false
}
}
export const getStaticProps = async (context) => {
const id = context.params.id;
const res = await fetch('https://[server]/course/' id);
const data = await res.json();
return {
props: { course: data }
}
}
const Details = ({ course }) => {
return (
<div>
<h1> { course.course_name } </h1>
<h1>a</h1>
</div>
);
}
export default Details;
Код находится в папке «Страницы». Я следил за учебником на YouTube от «netninja», и когда я попробовал его на его коде, он работает. Я где-то читал, что он не будет работать с компонентами, но я уже разместил его на страницах, но он все равно ничего не возвращает.
Могу ли я что-нибудь сделать ?
Комментарии:
1.
fetch
getStaticProps
Возвращает ли внутренняя часть ожидаемый ответ/данные?2. Так и должно быть. Я не могу проверить, так это или нет, потому что я не могу вызвать данные. Но это ссылка API, и когда ссылка API запускается, она возвращает определенные данные
3. Вы можете проверить, что перенастроено в ответе, если войдете
data
в консоль и проверите вывод в терминале, где вы запустили сервер разработки. Возможно, вы захотите сделать то же самое и с запросом внутриgetStaticPaths
.4. Здравствуйте, я протестировал его, и по какой-то причине он не распознает массив как базу данных (если это имеет какой-либо смысл). Поэтому мое лучшее объяснение заключается в том, что я попытался войти в консоль на другой странице, где на самом деле работает API, и на полученных данных был цвет, указывающий тип данных, но на текущей странице он только черно-белый (что, как я полагаю, означает, что код не распознает его как базу данных). Могу ли я что-нибудь сделать?
5. Здравствуйте, я только что понял проблему. Данные находятся в «course.result.course_name» после того, как я проверил их в журнале консоли. Большое вам спасибо за вашу помощь, и я обязательно воспользуюсь консолью. с этого момента регистрируйте больше. ЕЩЕ РАЗ СПАСИБО!!!
Ответ №1:
Я получил ответ. После проверки консоли.войдите в систему с данными. Похоже, что данные находятся в другом массиве, который называется результатом. поэтому мне нужно было вызвать данные из course.result.course_name. Так что ответ заключается в том, чтобы просто проверить консоль.регистрируйтесь время от времени. Крикните Джулиомальвесу за то, что он указал на это