प्रिज्मा का उपयोग करने वाली साइट का परीक्षण करते समय मुझे अपने द्वारा दर्ज किए गए परीक्षण डेटा को साफ़ करने के लिए समय-समय पर डेटाबेस को साफ़ करने की आवश्यकता थी।
आप निम्न का उपयोग करके दर्ज किए गए आइटम साफ़ कर सकते हैं:
await prisma.user.deleteMany({})
यदि किसी कारण से आप कुछ प्रसंस्करण करने के लिए वस्तुओं पर पुनरावृति करना चाहते हैं, तो आप उन पर इस तरह से पुनरावृति कर सकते हैं:
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()
इस मामले में मैं पिछले उदाहरण से ज्यादा कुछ नहीं कर रहा हूं, जो इस सारे कोड को बेमानी बनाता है, लेकिन आप deleteUser()
के अंदर कुछ भी कर सकते हैं। ।
हालांकि मुझे एक समस्या थी क्योंकि मेरा 2 टेबल, ट्वीट्स और उपयोगकर्ताओं के बीच संबंध था। एक यूजर से जुड़ा एक ट्वीट था। पहले मुझे सभी ट्वीट हटाने थे, फिर सभी उपयोगकर्ताओं को हटाना था, इसलिए मैंने यह फ़ंक्शन लिखा:
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()
}
Promise.all()
. के उपयोग पर ध्यान दें लपेटने के लिए users.map()
इसलिए मैं await
use का उपयोग कर सकता हूं इस पर, इसलिए मेरे द्वारा उपयोगकर्ताओं को हटाना शुरू करने से पहले सभी ट्वीट हटा दिए जाते हैं।