javascript - Fungsi Prisma findMany tidak mengembalikan data relasional


Saya mencoba mengisi data saya dengan data relasional menggunakan Prisma 2.28.0, berikut adalah saya

Model Schema.prisma di bawah

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?
}


fungsi yang saya coba gunakan untuk mengambil data.

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' }
]

Hasil DB transaksi

Basis Data Produk

Saya tidak tahu mengapa findMany() saya tidak mengembalikan data database relasional. Terima kasih

Jawaban #1

Saya menyarankan untuk membaca dokumentasinya, terutama bab ini dan bab-bab berikutnya. Dalam contoh mereka, mereka memiliki Author dan Post, di mana Post memiliki bidang author yang menunjuk ke Author. Kode mereka terlihat seperti ini:

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

Bab "Include deeply nested relations" sedikit lebih bawah sebenarnya menggunakan sebuah field .category yang juga merupakan array, seperti dalam contoh Anda dengan .transactions.

Jawaban #2

Anda perlu secara eksplisit mengatur include menjadi true.

Jadi kodenya akan terlihat seperti ini untukmu

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();