用 Prisma 覆盖整个关系字段?

Overide entire relation field with Prisma?

使用 Prisma 是否可以完全覆盖关系而不是连接和断开单个节点?

假设我有一个用户与第 1 组和第 2 组有组关系:

user: {
    id: "abcd"
    groups: [
        {id: 1},
        {id: 2}
    ]
}

如果我想让这个用户只连接到组 3:

user: {
    id: "abcd"
    groups: [
        {id: 3}
    ]
}

我必须这样做吗?:

mutation {
  updateUser(
    where: { id: "abcd" }
    data: {
        groups: {
            disconnect: {
                id: "1"
                id: "2"
            }
            connect: {
                id: "3"
            }
        }
    }
  ) {
    id
  }
}

或者有什么方法可以覆盖整个关系:

mutation {
  updateUser(
    where: { id: "abcd" }
    data: {
        groups: [{id:3}]
    }
  ) {
    id
    name
  }
}

我相信您要找的是 API 类似于 scalar lists:

mutation {
  createUser(data: {
    scores: { set: [1, 2, 3] }
    friends: { set: ["Sarah", "Jane"] }
    throws: { set: [false, false] }
  }) {
    id
  }
}

Prisma 目前无法做到这一点,但已经有一个 open feature request 可以实现该功能,如果您对该功能感兴趣,请留下您的信息。

您可以使用设置替换连接

data: {
    groups: {
        set: {
            id: "3"
        }
    }
}