Weboldal keresés

javascript - A Prisma findMany függvény nem adja vissza a relációs adatokat


Prisma 2.28.0 használatával próbálom feltölteni az adataimat relációs adatokkal, íme az én

A Schema.prisma modell alább

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

model Product {
  id           Int         @id @default(autoincrement())
  name         String         @db.VarChar(255)
  transactions Transaction[]
}

model Transaction {
  id        BigInt   @id @default(autoincrement())
  quantity  Int
  time      Int
  product  Product? @relation(fields: [productId], references: [id])
  productId Int?
}


az a funkció, amellyel adatokat próbálok lekérni.

const { PrismaClient }=require("@prisma/client")

const prisma = new PrismaClient()

async function checkPrismaConnection(){
    try {
        const result=await prisma.product.findMany();
        console.log(result);
    }catch (e) {
        console.log(e);
    }
}

 checkPrismaConnection();

OutPut

[
  { id: 1, name: 'John Doe' },
  { id: 2, name: 'Masum' },
  { id: 3, name: 'Rezaul' }
]

Tranzakciós adatbázis eredmény

Termék adatbázis

Nem tudom, miért nem adja vissza a findMany() a relációs adatbázis adatokat. Köszönöm

Válasz #1

Azt javaslom, hogy olvasd el a dokumentációt, különösen ezt a fejezetet és az azt követőket. A példájukban van egy Author és egy Post, ahol a Post rendelkezik egy author mezővel, amely egy Author-ra mutat. A kódjuk így néz ki:

const getPosts = await prisma.post.findMany({
  where: {
    title: {
      contains: 'cookies',
    },
  },
  include: {
    author: true, // Return all fields
  },
})

A "Mélyen beágyazott kapcsolatok bevonása" fejezet egy kicsit lejjebb valójában egy .category mezőt használ, amely szintén tömb, ahogy a te példádban a .transactions esetében.

Válasz #2

Külön ki kell jelölnöd, hogy az include igaz legyen.

Tehát a kód így fog kinézni számodra

const { PrismaClient }=require("@prisma/client")

const prisma = new PrismaClient()

async function checkPrismaConnection(){
   try {
    const result=await prisma.product.findMany({
      include: {
        transaction: true,
       },
   });
    console.log(result);
}catch (e) {
    console.log(e);
}
}

 checkPrismaConnection();