Database
 sql >> база данни >  >> RDS >> Database

Prisma, как да изчистя базата данни

Докато тествах сайт, който използва Prisma, имах нужда да изчиствам базата данни от време на време, за да изчистя тестовите данни, които въведох.

Можете да изчистите въведените елементи с помощта на:

await prisma.user.deleteMany({})

Ако по някаква причина искате да повторите елементите, за да извършите някаква обработка, можете да ги повторите по следния начин:

const users = await prisma.user.findMany({})

const deleteUser = async (user) => {
  return await prisma.user.delete({
    where: { id: user.id }
  })
}

const deleteUsers = async () => {
  users.map((user) => deleteUser(user))
}

deleteUsers()

В този случай не правя нищо повече от предишния пример, което прави целия този код излишен, но можете да правите всичко, което искате в deleteUser() .

Имах проблем обаче, защото имах връзка между 2 таблици, туитове и потребители. Туит е свързан с потребител. Първо трябваше да премахна всички туитове, след това да премахна всички потребители, затова написах тази функция:

export const clearData = async (prisma) => {
  const users = await prisma.user.findMany({})
  const tweets = await prisma.tweet.findMany({})

  const deleteUser = async (user) => {
    return await prisma.user.delete({
      where: { id: user.id }
    })
  }
  const deleteTweet = async (tweet) => {
    return await prisma.tweet.delete({
      where: { id: tweet.id }
    })
  }

  const deleteTweets = async () => {
    return Promise.all(tweets.map((tweet) => deleteTweet(tweet)))
  }

  const deleteUsers = async () => {
    return Promise.all(users.map((user) => deleteUser(user)))
  }

  await deleteTweets()
  await deleteUsers()
}

Обърнете внимание на използването на Promise.all() за да обвиете users.map() така че мога да използвам await върху него, така че всички туитове се премахват, преди да започна да изтривам потребители.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Фази на оптимизация и пропуснати възможности

  2. Как да създадете една таблица от друга таблица в SQL

  3. Помощна програма за проверка на клъстер, генерираща голям брой xml файлове във файловата система “/u01”.

  4. Как да премахнете водещи и/или крайни интервали на низ в T-SQL

  5. Извличане на пълни съобщения за грешка в isql