【问题标题】:Prisma findMany function is not returning relational dataPrisma findMany 函数不返回关系数据
【发布时间】:2021-10-07 03:32:45
【问题描述】:

我正在尝试使用 Prisma 2.28.0 用关系数据填充我的数据,这是我的

Schema.prisma 模型如下

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


我正在尝试获取数据的函数。

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

输出

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

事务数据库结果

产品数据库

我不知道为什么我的 findMany() 没有重新调整关系数据库数据。谢谢

【问题讨论】:

  • 您的数据库结果的屏幕截图似乎是事务的结果(引用产品 ID),而您的代码似乎只是查询产品。复制代码/截图不正确?
  • 我现在附上了产品数据库截图并更新了我的问题。

标签: javascript postgresql prisma


【解决方案1】:

我建议阅读文档,尤其是 this chapter 和后面的文档。在他们的示例中,它们有一个AuthorPost,其中Post 有一个指向Authorauthor 字段。他们的代码如下所示:

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

“包含深度嵌套关系”一章实际上使用了一个字段.category,它也是一个数组,就像你的例子中的.transactions一样。

【讨论】:

  • 如果我使用它将关系 db 填充为对象,但与其他人没有任何关系的其他记录没有显示..
  • 不确定您的问题到底是什么。也许关闭这个问题并使用您更新的代码及其更新的(和预期的)结果创建一个新问题。
【解决方案2】:

您需要将 include 显式设置为 true。

所以你的代码看起来像这样

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

【讨论】:

    猜你喜欢
    • 2021-06-15
    • 2022-08-04
    • 2021-09-13
    • 2021-01-23
    • 1970-01-01
    • 2021-09-06
    • 2020-11-29
    • 2017-03-07
    • 1970-01-01
    相关资源
    最近更新 更多