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, αυτό δεν είναι διαθέσιμο ακόμα.