React, js + Prisma лучший способ обновить sql с помощью кнопки

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

Console.log ваш req.body Кажется, это не json

Pompedup 22.11.2022 18:55
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
1
140
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Измените выбор на

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. Они почти все охватили

Другие вопросы по теме