POST-запрос к Sanity CMS с использованием API Next.js и следующего подключения приводит к ошибке 500.
У меня возникли проблемы с отправкой POST-запроса информации о пользователе в форме регистрации в Sanity CMS. Я использую Next.js и next-connect. При отправке запроса получаю ошибку 500.
Вот фрагмент кода с лицевой страницы Register.js:
const submitHandler = async ({
firstName,
lastName,
email,
password,
confirmPassword,
}) => {
if (password !== confirmPassword) {
enqueueSnackbar("Passwords don't match", { variant: "error" });
return;
}
try {
const { data } = await axios.post(`/api/users/register`, {
firstName,
lastName,
email,
password,
});
console.log("hit success")
dispatch({ type: "USER_LOGIN", payload: data });
jsCookie.set("userInfo", JSON.stringify(data));
router.push("/");
} catch (err) {
console.log(err.message)
enqueueSnackbar("Something went wrong, please try again.", { variant: "error" });
}
};
Вот код из файла api/users/router.js:
handler.post(async (req, res) => {
console.log("hit handler")
const projectId = client.projectId;
const dataset = client.dataset;
const apiVersion = client.apiVersion;
const tokenWithWriteAccess = process.env.SANITY_AUTH_TOKEN;
const createMutations = [
{
create: {
_type: "user",
firstName: req.body.firstName,
lastName: req.body.lastName,
email: req.body.email,
password: bcrypt.hashSync(req.body.password),
isAdmin: false,
isWholesale: false,
},
},
];
const { data } = await axios.post(
`https://${projectId}.api.sanity.io/v${apiVersion}/data/mutate/${dataset}`,
{
mutations: createMutations,
},
{
headers: {
"Content-type": "application/json",
Authorization: `Bearer ${tokenWithWriteAccess}`,
},
}
);
const userId = data.results[0].id;
const user = {
_id: userId,
firstName: req.body.firstName,
lastName: req.body.lastName,
email: req.body.email,
isWholesale: false,
isAdmin: false,
};
const token = signToken(user);
res.send({ ...user, token });
});
- Я сделал все возможное, чтобы дважды проверить формат запросов GROQ.
- Я убедился, что мне разрешен локальный хост через CORS.
- Я дважды проверил, что использую текущий токен доступа и все остальные переменные, такие как projectID и т. д., верны.
- Я убедился, что обработчики моей формы работают правильно и что отправляемый мной объект соответствует схеме, которую я установил в Sanity.io.
- Я использовал Postman для успешного запроса GET к конечной точке api/users/register.js.
Спасибо заранее за любую помощь!