Saat menguji situs yang menggunakan Prisma, saya perlu menghapus basis data dari waktu ke waktu, untuk menghapus data uji yang saya masukkan.
Anda dapat menghapus item yang dimasukkan dengan menggunakan:
await prisma.user.deleteMany({})
Jika karena alasan tertentu Anda ingin mengulangi item untuk melakukan beberapa pemrosesan, Anda dapat mengulanginya dengan cara ini:
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()
Dalam hal ini saya tidak melakukan sesuatu yang lebih dari contoh sebelumnya, yang membuat semua kode ini berlebihan, tetapi Anda dapat melakukan apa pun yang Anda inginkan di dalam deleteUser()
.
Saya punya masalah karena saya memiliki hubungan antara 2 tabel, tweet, dan pengguna. Sebuah tweet dikaitkan dengan pengguna. Pertama saya harus menghapus semua tweet, lalu menghapus semua pengguna, jadi saya menulis fungsi ini:
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()
}
Perhatikan penggunaan Promise.all()
untuk membungkus users.map()
jadi saya bisa menggunakan await
di atasnya, jadi semua tweet dihapus sebelum saya mulai menghapus pengguna.