GraphQL: запрос значения из другой таблицы из мутации
Допустим, у меня есть стол t1
это внешний ключ к другой таблице t2
, Для простоты, t2
имеет только столбцы name и id, которые являются уникальными. Я храню идентификатор в t1
,
Моя проблема в том, что я хочу написать мутацию, в которой я знаю имя, но я не знаю идентификатор, когда иду хранить что-то в t1
, Есть ли способ сделать запрос внутри моей мутации, чтобы он преобразовал значение в моем утверждении?
Возможно, плагин, который я могу добавить в свой проект?
Я получаю что-то вроде этого, где я передаю известное имя, но я хочу сохранить идентификатор
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
}
}
}
Это простой пример. Причина, по которой я не хочу запрашивать идентификатор с именем, в действительности t1
является внешним ключом для множества других таблиц с такой же ситуацией, и я не хочу делать 9+ запросов, просто чтобы преобразовать каждую строку в целочисленный идентификатор.
Я бы предпочел сделать что-то вроде этого:
mutation addT1(
$knownT2Name: String!,
) {
createT1 (
input: {
t1: {
id: $component
t2_id: t2Byt2(name: $knownT2Name) { id }
}
}
) {
t1 {
id
t2_id
}
}
}
где t2Byt2(name: $knownT2Name) { id }
будет подзапросом, который передает имя и получает идентификатор, а затем сохраняет идентификатор в 't2_id'
Я смотрю на плагин вложенных мутаций для postgraphile ( вот GitHub), но у меня не было никакой тяги. Это не совсем то, что я ищу.
1 ответ
Для простых отношений, я полагаю, вы хотите что-то вроде: (используя плагин вложенных мутаций). Это работает только на CREATE. Не повезло с UPSERT.
mutation addT1($t1Name: String!, $t2Name: String!) {
createT1(
input: {
T1: {
name: $t1Name,
t2ToT2: { connectByT2: { name: $t2Name } }
}
}
) {
t1 {
t1Id
name
t2ByT2 {
name
}
}
}
}