node.js - Η διαδρομή δεν υπάρχει στο JsonFilter
Δεν είμαι σίγουρος τι συμβαίνει. Χρησιμοποιώ το Prisma με μια σύνδεση mongoDB. Προσπαθώ να αναζητήσω στο JSON δέντρο συγκεκριμένες τιμές που να ταιριάζουν με το [κλειδί, τιμή] από τον βρόχο. Δεν κατάφερα να προχωρήσω αρκετά για να δω αν αυτή η υλοποίηση θα λειτουργήσει (δεν νομίζω ότι θα λειτουργήσει) επειδή η ιδιότητα path συνεχίζει να δίνει σφάλμα. Παρακάτω βρίσκεται το αρχείο μου schema.prisma και το μήνυμα σφάλματος που επιστρέφεται από την κλήση.
generator client {
provider = "prisma-client-js"
previewFeatures = [ "mongoDb", "filterJson"]
}
datasource db {
provider = "mongodb"
url = env("DATABASE_URL")
}
model User {
id String @id @default(dbgenerated()) @map("_id") @db.ObjectId
email String
options Json
password String
role String
}
Invalid `.findMany()` invocation
for (const [key, value] of Object.entries(filters)) {
return await prisma.user
→ .findMany({
where: {
options: {
path: key,
~~~~
equals: value
}
}
})
Unknown arg `path` in where.options.path for type JsonFilter. Did you mean `not`? Available args:
type JsonFilter {
equals?: Json
not?: Json
}
Έχω τρέξει πολλές φορές το npx prisma generate. Έχω συμπεριλάβει τη λειτουργία "filterJson" όπως καταγράφεται στην τεκμηρίωση. Έχω ψάξει τα πάντα στο Google και δεν μπορώ να καταλάβω πού κάνω λάθος.
Κάποια βοήθεια;
Απάντηση #1
Νομίζω ότι το MongoDB δεν υποστηρίζει το φίλτρο σε πεδίο JSON και/ή η υποκείμενη λειτουργικότητα δεν υποστηρίζεται από το Prisma.
(https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filter-on-a-json-field)
Ο γιατρός λέει
Η υλοποίηση του φιλτραρίσματος Json διαφέρει ανάμεσα στους συνδέσμους:
- Ο συνδετήρας MySQL χρησιμοποιεί την υλοποίηση του MySQL για το μονοπάτι JSON
- Ο συνδετήρας PostgreSQL χρησιμοποιεί τις προσαρμοσμένες λειτουργίες JSON και τους τελεστές που υποστηρίζονται στην έκδοση 12 και παλαιότερες
Η λειτουργικότητα φαίνεται να υποστηρίζεται μόνο για PostgreSQL >= 12 και MySQL
Επεξεργασία: βρείτε αυτό: https://github.com/prisma/prisma/discussions/10592
λέγοντας
Γεια σου @LewisMorgans, αυτό δεν είναι διαθέσιμο ακόμα.