Prisma 没有设置一个可选的外键 null

编程入门 行业动态 更新时间:2024-10-04 03:33:27

Prisma 没有设置一个<a href=https://www.elefans.com/category/jswz/34/1757334.html style=可选的外键 null"/>

Prisma 没有设置一个可选的外键 null

我正在尝试将 prisma 中的一个可选外键更新为 null,但它给了我一个错误,即值 null 不是预期的,但“未定义”可以作为值完成。如果尝试从 MySQL 设置为 null 它有效。

车辆 Prisma 架构

 model Vehicle {
          id                        String                  @id @default(uuid())
          vehicle_model_category_id String?
          Vehicle_Model_Category    Vehicle_Model_Category? @relation(fields: [vehicle_model_category_id], references: [id], onUpdate: Cascade, onDelete: Cascade)
     }

这里一个车型可能没有类别模型,通常可以为空,因为在模式中也是可选的。 Vehicle_Model_Category(1) -> Vehicle_Model(Many)之间的关系

    let vehicle_model_category_id;
const vehicleModelCategory = await prisma.vehicle_Model.findUnique({
  where: {
    id: vehicle_model_id,
  },
  select: {
    Vehicle_Model_Category: {
      select: {
        id: true,
      },
    },
  },
});

if (vehicleModelCategory.Vehicle_Model_Category) {
  vehicle_model_category_id =
    vehicleModelCategory.Vehicle_Model_Category.id;
}

let vehicle_model_category_connect;
if (vehicle_model_category_id) {
  console.log("EXISTS");
  vehicle_model_category_connect = {
    connect: {
      id: vehicle_model_category_id,
    },
  };
} else {
  vehicle_model_category_connect = null;
}

console.log(vehicle_model_category_connect + " VARIABLE CONNECT"); // null

const vehicle = await prisma.vehicle.create({
  data: {
    Vehicle_Model_Category: vehicle_model_category_connect }
  })

我得到的错误是:

data.Vehicle_Model_Category 的参数 Vehicle_Model_Category 不能为空。请改用 undefined

我尝试在 MySQL 上手动执行此操作以在 Mysql 上更新,它可以工作但是从 prisma 不工作。

回答如下:

Prisma 区分 null 和 undefined。

null
是一个值,而
undefined
表示什么都不做。请参阅文档的此section。将字段值设置为
undefined
等同于根本不在更新查询中包含该字段。从错误消息来看,prisma 希望您将其设置为
undefined
而不是 null。

例如,假设我们有这样的模式,其中一个用户有很多帖子,但一个帖子可能有也可能没有与之关联的用户。注意可选关系

author
和关系标量
authorId


model User {
  id    Int    @id @default(autoincrement())
  posts Post[]
}

model Post {
  id       Int   @id @default(autoincrement())
  author   User? @relation(fields: [authorId], references: [id])
  authorId Int?
}

如果我们编写一个脚本来创建一个新帖子并将可选关系

author
设置为null,如下所示

const post = await prisma.post.create({
    data: {
      author: null
    }
  })

我们会收到一条错误消息

Argument author for data.author must not be null. Please use undefined instead.
,这与您收到的错误消息类似。

我将更新脚本以将

author
关系字段设置为
undefined

const post = await prisma.post.create({
    data: {
      author: undefined
    }
  })

我们会得到这个输出

{ id: 2, authorId: null }

更多推荐

Prisma 没有设置一个可选的外键 null

本文发布于:2024-05-30 11:15:33,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770438.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:可选   Prisma   null

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!