sql >> Databasteknik >  >> RDS >> Database

Prisma, hur man rensar databasen

När jag testade en webbplats som använde Prisma fick jag då och då rensa databasen för att rensa testdata jag angav.

Du kan rensa inmatade objekt genom att använda:

await prisma.user.deleteMany({})

Om du av någon anledning vill iterera på objekten för att göra en del bearbetning, kan du iterera över dem på detta sätt:

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()

I det här fallet gör jag inget mer än det föregående exemplet, vilket gör all denna kod överflödig, men du kan göra vad du vill i deleteUser() .

Jag hade dock ett problem eftersom jag hade en relation mellan 2 tabeller, tweets och användare. En tweet kopplades till en användare. Först var jag tvungen att ta bort alla tweets, sedan ta bort alla användare, så jag skrev den här funktionen:

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()
}

Lägg märke till användningen av Promise.all() för att radbryta users.map() så jag kunde använda await på den, så alla tweets tas bort innan jag börjar ta bort användare.


  1. Hur man ändrar kolumn från Null till Not Null i SQL Server-tabellen - SQL Server / T-SQL självstudie del 52

  2. MySQL - välj data från databasen mellan två datum

  3. DAY() Exempel – MySQL

  4. Konvertera ett datum i MySQL från strängfält