Я хочу получить данные с сервера nextjs во внешнем интерфейсе, однако код после fetch() не работает в функции onSubmit(). вот /тестовая страница
страницы/тест
const onSubmit = (data) => {
console.info("________");
users.map(async (user, index) => {
if (data.email === user.email) {
if (data.password === user.password) {
console.info("hi");
const data = await fetch("http://localhost:3000/api/test");
// after the fetch, this code does not run
console.info("back-end is: ", data);
}
}
});
};
и вот мой код в /api/test
export default async function student_method(req, res) {
return console.info("get in server");
}
так пожалуйста, в чем проблема??
я пытаюсь получить данные внутри базы данных поэтому нам нужно использовать метод fetch(), но fetch() работает успешно, но код после fetch() не работает
Я думаю, что проблема заключается в использовании оператора return
на стороне сервера. NextJS предоставляет вспомогательные методы в объекте res
, который вы получаете в своей серверной функции.
Попробуйте что-то вроде этого:
res.status(200).send("get in server");
Подробнее см. здесь: API-маршруты: Response Helpers
const data = await fetch("http://localhost:3000/api/test");
Проблема в этой линии. Там вы ждете разрешения Promise, но если вы видите, что вы api/test, вы возвращаете только журнал.
Пожалуйста, попробуйте вернуть обещание.
Код сейчас не работает, потому что вы ждете ответа сервера, но ничего не отправляете с сервера.
Вы должны отправить ответ клиенту следующим образом:
export default async function student_method(req, res) {
/* status code 200 or any other status codes */
res.status(200).send("get in server");
}
да, конечно, я забыл отправить ( res ) в бэкэнд. большое спасибо за ваш ответ
Я считаю, что ключевое слово async всегда будет заключать в себе обещание для вас.