假设我有一个表t1
,该表是到另一个表t2
的外键。为简单起见,t2
仅具有唯一的列“名称”和“ id”。我将ID存储在t1
中。
我的问题是我想写一个突变,其中我知道名字,但是当我将某些东西存储在t1
中时我不知道id。有没有一种方法可以查询我的突变内部,以便它转换我的语句中的值?
也许我可以添加到项目中的插件?
我最终遇到这样的情况,我传入了一个已知名称,但我想存储ID
mutation addT1(
$knownT2Name: String!,
) {
createT1 (
input: {
t1: {
id: $component
# Is there a way to convert this to the id inside the query
# Or do I need to query for the id with the name first then pass that in?
t2_id: $knownT2Name
}
}
) {
t1 {
id
t2_id
}
}
}
这是一个简单的示例。我不想查询名称的ID的原因实际上是t1
是外键到无数其他情况相同的表的,而且我不想仅执行9个以上的查询将每个字符串转换为整数id。
我宁愿能够做这样的事情:
mutation addT1(
$knownT2Name: String!,
) {
createT1 (
input: {
t1: {
id: $component
t2_id: t2Byt2(name: $knownT2Name) { id }
}
}
) {
t1 {
id
t2_id
}
}
}
t2Byt2(name: $knownT2Name) { id }
是一个子查询,它传递名称并获取ID,然后将ID存储在't2_id'中
我正在寻找一个用于postgraphile(Here's the GitHub)的嵌套突变插件,但是我没有任何吸引力。这不是我想要的。
答案 0 :(得分:0)
对于简单的关系,我相信您需要类似的东西:(使用嵌套的变异插件)。这仅适用于CREATE。 UPSERT没有运气。
mutation addT1($t1Name: String!, $t2Name: String!) {
createT1(
input: {
T1: {
name: $t1Name,
t2ToT2: { connectByT2: { name: $t2Name } }
}
}
) {
t1 {
t1Id
name
t2ByT2 {
name
}
}
}
}