Hasura:如何在插入时建立与现有记录(多对多)的关系?
Hasura: How to establish relationship to existing record (many to many) at insert time?
Hasura:如何在插入时建立与现有记录(多对多)的关系?
我有两个 table:产品和类别根据每个 table 中的一个 id 列和一个中介在多对多关系中相互 linked table product_category.
我可以使用 product_category 将 tables 和 link 的记录直接插入到 postgres 中,这在 Hasura 中非常适合查询,所以我知道我已经正确设置了.
我想要做的是插入一个新产品并知道我想在插入时建立关系的一个(或多个)类别的 ID。最好不要单独调用
文档只介绍了同时插入对象和相关对象,但如果另一个已经存在怎么办?
我已经尝试了我期望的工作(link将此产品归入 ID 为 1 的类别):
mutation MyMutation {
insert_product_one(
object: {
name: "Champion",
category: {data: {id: 1}}
}) {
id
}
}
但是抛出:
"Not-NULL violation. null value in column \"product_id\" 违反非空约束"
如何插入此新产品并将其 link 放入一个或多个类别?最好是在一个语句中,但即使是检索生成的 id 和更新突变的示例也不理想,但至少是一个解决方案。
更新:作为完整性检查,我重新创建了产品和类别 tables 作为最小的基本示例,并尝试了我的查询和 xadm 建议的更新插入冲突方法。
数据和关系我在这里添加了一些截图:
mutation MyMutation {
insert_testproduct_one(
object: {
name: "Champion",
category: {
data: {id: 1},
on_conflict: { constraint: primarykeything , update_columns: [id] }
}
}) {
id
}
}
错误类似:"Not-NULL violation. null value in column \"testcategory_id\" violates not-null constraint"
注意:primarykeything是桥table上的主键,由两个id组成。
由于这是多对多关系,因此您在它们之间有一个连接 table。从我在屏幕截图中看到的内容来看,您在类别关系中发布的类别 ID 称为 testcategory_id
而不是 id
。
mutation MyMutation {
insert_testproduct_one(
object: {
name: "Champion",
category: {
data: {testcategory_id: 1}
}
}) {
id
}
}
要使 table testproduct_testcategory 中的 id 必须自动递增
Hasura:如何在插入时建立与现有记录(多对多)的关系?
我有两个 table:产品和类别根据每个 table 中的一个 id 列和一个中介在多对多关系中相互 linked table product_category.
我可以使用 product_category 将 tables 和 link 的记录直接插入到 postgres 中,这在 Hasura 中非常适合查询,所以我知道我已经正确设置了.
我想要做的是插入一个新产品并知道我想在插入时建立关系的一个(或多个)类别的 ID。最好不要单独调用
文档只介绍了同时插入对象和相关对象,但如果另一个已经存在怎么办?
我已经尝试了我期望的工作(link将此产品归入 ID 为 1 的类别):
mutation MyMutation {
insert_product_one(
object: {
name: "Champion",
category: {data: {id: 1}}
}) {
id
}
}
但是抛出:
"Not-NULL violation. null value in column \"product_id\" 违反非空约束"
如何插入此新产品并将其 link 放入一个或多个类别?最好是在一个语句中,但即使是检索生成的 id 和更新突变的示例也不理想,但至少是一个解决方案。
更新:作为完整性检查,我重新创建了产品和类别 tables 作为最小的基本示例,并尝试了我的查询和 xadm 建议的更新插入冲突方法。
数据和关系我在这里添加了一些截图:
mutation MyMutation {
insert_testproduct_one(
object: {
name: "Champion",
category: {
data: {id: 1},
on_conflict: { constraint: primarykeything , update_columns: [id] }
}
}) {
id
}
}
错误类似:"Not-NULL violation. null value in column \"testcategory_id\" violates not-null constraint"
注意:primarykeything是桥table上的主键,由两个id组成。
由于这是多对多关系,因此您在它们之间有一个连接 table。从我在屏幕截图中看到的内容来看,您在类别关系中发布的类别 ID 称为 testcategory_id
而不是 id
。
mutation MyMutation {
insert_testproduct_one(
object: {
name: "Champion",
category: {
data: {testcategory_id: 1}
}
}) {
id
}
}
要使 table testproduct_testcategory 中的 id 必须自动递增