sql >> Database teknologi >  >> RDS >> Database

Prisma, hvordan man rydder databasen

Mens jeg testede et websted, der brugte Prisma, havde jeg behov for at rydde databasen fra tid til anden for at rydde de testdata, jeg indtastede.

Du kan slette de indtastede elementer ved at bruge:

await prisma.user.deleteMany({})

Hvis du af en eller anden grund ønsker at iterere på emnerne for at udføre noget behandling, kan du iterere over dem på denne måde:

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 dette tilfælde gør jeg ikke mere end det foregående eksempel, hvilket gør al denne kode overflødig, men du kan gøre alt, hvad du vil inde i deleteUser() .

Jeg havde dog et problem, fordi jeg havde en relation mellem 2 tabeller, tweets og brugere. Et tweet blev knyttet til en bruger. Først skulle jeg fjerne alle tweets, derefter fjerne alle brugere, så jeg skrev denne funktion:

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

Bemærk brugen af ​​Promise.all() for at ombryde users.map() så jeg kunne bruge await på den, så alle tweets fjernes, før jeg begynder at slette brugere.


  1. SQLAlchemy func.count på boolesk kolonne

  2. pak postgresql-array ud i rækker

  3. Vinduesfunktioner og mere lokal aggregering

  4. En simpel introduktion til brug af MySQL på Linux-terminalen