Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Prisma, cách xóa cơ sở dữ liệu

Trong khi kiểm tra một trang web sử dụng Prisma, thỉnh thoảng tôi cần phải xóa cơ sở dữ liệu để xóa dữ liệu kiểm tra mà tôi đã nhập.

Bạn có thể xóa các mục đã nhập bằng cách sử dụng:

await prisma.user.deleteMany({})

Nếu vì lý do nào đó bạn muốn lặp lại các mục để thực hiện một số xử lý, bạn có thể lặp lại chúng theo cách này:

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

Trong trường hợp này, tôi không làm gì nhiều hơn ví dụ trước, điều này làm cho tất cả mã này trở nên thừa, nhưng bạn có thể làm bất cứ điều gì bạn muốn bên trong deleteUser() .

Tôi đã gặp sự cố vì tôi có mối quan hệ giữa 2 bảng, tweet và người dùng. Một tweet được liên kết với một người dùng. Đầu tiên, tôi phải xóa tất cả các tweet, sau đó xóa tất cả người dùng, vì vậy tôi đã viết hàm này:

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ưu ý việc sử dụng Promise.all() để bọc users.map() vì vậy tôi có thể sử dụng await trên đó, vì vậy tất cả các tweet sẽ bị xóa trước khi tôi bắt đầu xóa người dùng.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Giải pháp thử thách trình tạo chuỗi số - Phần 4

  2. Người thiết kế cơ sở dữ liệu làm gì?

  3. Đơn vị chức năng

  4. VLDB ở lứa tuổi thanh thiếu niên 20:Bạn sẽ cần nhiều hơn nữa…

  5. Danh pháp &Kiến trúc Sản phẩm IRI