graphql - GraphQL:从突变中查询另一个表中的值
问题描述
假设我有一个表t1
,它是另一个表的外键t2
。为简单起见,t2
只有列 'name' 和 'id' 都是唯一的。我将 id 存储在t1
.
我的问题是我想写一个我知道名字的突变,但是当我去存储一些东西时我不知道 id t1
。有没有办法在我的突变内部进行查询,以便转换我的语句中的值?
也许我可以添加到我的项目中的插件?
我最终得到这样的东西,我传入一个已知名称,但我想存储 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 的嵌套突变插件(这是 GitHub),但我没有任何吸引力。这不是我要找的。
解决方案
对于简单的关系,我相信你想要这样的东西:(使用嵌套突变插件)。这仅适用于 CREATE。UPSERT 不走运。
mutation addT1($t1Name: String!, $t2Name: String!) {
createT1(
input: {
T1: {
name: $t1Name,
t2ToT2: { connectByT2: { name: $t2Name } }
}
}
) {
t1 {
t1Id
name
t2ByT2 {
name
}
}
}
}
推荐阅读
- sql - 在 DB2 中用午夜秒四舍五入
- javascript - 如何使用 javascript 读取 .txt 文件?
- java - 向 JSON 结构添加更改
- r - 如何在您定义的函数中使用 Python 模块的函数而不导入超出函数的范围(即:R 具有 package::function)
- java - Spring Boot 控制器测试,空指针异常
- c++ - 如何比较if语句中的字符串?
- java - 使用 com.ibm.websphere.crypto.PasswordUtil.decode 时出现 InvalidPasswordCipherException
- python - 如何在python中找到几种类型的最新共同祖先(基本类型)?
- ios - IOS 13 自动化要求运行
- javascript - 内存中的 ReactJS 虚拟 DOM 并应用增量更改