sql >> Database >  >> RDS >> Database

Prisma, hoe de database te wissen

Tijdens het testen van een site die Prisma gebruikte, moest ik de database van tijd tot tijd wissen om de testgegevens die ik had ingevoerd te wissen.

U kunt ingevoerde items wissen met:

await prisma.user.deleteMany({})

Als je om de een of andere reden de items wilt herhalen om wat verwerking uit te voeren, kun je ze op deze manier herhalen:

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

In dit geval doe ik niets meer dan het vorige voorbeeld, waardoor al deze code overbodig is, maar je kunt alles doen wat je wilt binnen deleteUser() .

Ik had echter een probleem omdat ik een relatie had tussen 2 tabellen, tweets en gebruikers. Een tweet is gekoppeld aan een gebruiker. Eerst moest ik alle tweets verwijderen en daarna alle gebruikers, dus schreef ik deze functie:

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

Let op het gebruik van Promise.all() om users.map() in te pakken zodat ik await . kan gebruiken erop, dus alle tweets worden verwijderd voordat ik gebruikers ga verwijderen.


  1. Hoe groepeer ik op continue bereiken

  2. Hoe een geheel getal naar een decimaal te converteren in SQL Server

  3. hoe voeg ik superprivileges toe aan de mysql-database?

  4. Wat is het verschil tussen expliciete en impliciete cursors in Oracle?