async function change_status(object_id:number){
const response = await fetch('/api/db', {
method: 'POST',
body: JSON.parse(`{"id":${object_id}}`)
});
if (!response.ok){
throw new Error(response.statusText);
}
return await response.json();
}
Я хочу, чтобы эта кнопка изменила int в mysql
<button onClick = {() => change_status(object.id)}>
change Status
</button>
/api/db.ts
export default async function handler(req: NextApiRequest,res: NextApiResponse) {
const data = JSON.parse(req.body);
const object_id = data.id;
const find_object = await prisma.objects.findFirstOrThrow({
where: {id:object_id}
});
if (find_object.status == 0){
var change = await prisma.objects.update({
where: { id: object_id },
data: { status:1 },
})
}
else {
var change = await prisma.objects.update({
where: { id: object_id },
data: { status:0 },
})
}
res.json(change);
}
Я получаю эту ошибку SyntaxError: Unexpected token o in JSON at position 1
Есть ли лучший способ закодировать кнопку или передать object_id без JSON
Измените выбор на
const response = await fetch('/api/db', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({ id: object_id }),
});
А в вашем апи просто
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
const { id } = req.body;
...
}
Я просто скину немного информации о Призме, когда у меня были с ней такие проблемы.
1 - не забудьте использовать body: JSON.stringify(),
(здесь может быть проблема)
2 - также настройте свой заголовок.
3 - Я бы посоветовал избегать ключевого слова var
из-за некоторых вещей (например, подъема).
4 - придерживайтесь документации Prisma. Они почти все охватили
Console.log ваш
req.body
Кажется, это не json