簡體   English   中英

我在 prisma 一對多關系中有兩個 model 但我想將數據插入第二個 model 怎么辦?

[英]I have two model in prisma one to many relation but i want to insert data into second model how to do this?

我在 prisma 中有兩個 model - 一個 package model 和第二個變體 model。它們是一對多關系

model Package {
  id Int @id @default(autoincrement())
  name String
  title String
  vocavive_user vocavive_user[]
  variations Variation[]
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
}

model Variation {
  id Int @id @default(autoincrement())
  expiration Int
  bdt Int 
  discount_bdt Int @default(00)
  usd Int @default(00)
  discount_usd Int @default(00)
  status Boolean @default(false)
  packages Package? @relation(fields: [package_id], references: [id], onDelete: Cascade)
  package_id Int?
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
}

當我同時插入 package 數據和變化數據時,我可以插入數據變化。

exports.createPackage = catchAsync(async (req, res) => {
  const {
    name,
    title,
    expiration,
    bdt,
    discount_bdt,
    usd,
    discount_usd,
    status,
  } = req.body;
  const newPackage = await prisma.package.create({
    data: {
      name: name,
      title: title,
      variations: {
        create: {
          expiration,
          bdt,
          discount_bdt,
          usd,
          discount_usd,
          status,
        },
      },
    },
    include: {
      variations: true,
    },
  });
  console.log(newPackage);
  res.status(200).json(newPackage);
});

但在我的例子中,我只需要將值插入到變化表中。我試過了

exports.createVariation = catchAsync(async (req, res) => {
  const newVariation = await prisma.variation.create({
    data: {
      expiration: req.body.expiration,
      bdt: req.body.bdt,
      package_id: req.body.package_id,
    },
  });
  res.status(200).json(`variation Created Successfully: ${newVariation}`);
});

但它告訴我

38 exports.createVariation = catchAsync(async (req, res) => { 39 const newVariation = await prisma.variation.create( 外鍵約束在字段上失敗: Variation_package_id_fkey (index) at RequestHandler.handleRequestError (D:\Firoz\demo_authentication \node_modules@prisma\client\runtime\index.js:34869:13) 在 RequestHandler.handleAndLogRequestError (D:\Firoz\demo_authentication\node_modules@prisma\client\runtime\index.js:34841:12) 在 RequestHandler.request ( D:\Firoz\demo_authentication\node_modules@prisma\client\runtime\index.js:34836:12) 在異步 PrismaClient._request (D:\Firoz\demo_authentication\node_modules@prisma\client\runtime\index.js:35926: 16) 在異步 D:\Firoz\demo_authentication\controllers\packageController.js:39:24 錯誤:無效prisma.variation.create()調用

我怎么解決這個問題?

該錯誤消息表明不存在您在package_id字段中提供的 id 為 package 的情況。

如果不需要,您可以省略package_id字段,或者您需要確保 package 和您傳遞的 package_id 的值存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM