GraphQL интерпретирует идентификаторы узлов как строку, а не как целые числа.C#

Место общения программистов C#
Anonymous
GraphQL интерпретирует идентификаторы узлов как строку, а не как целые числа.

Сообщение Anonymous »

Я пытаюсь добавить идентификацию реле/глобального объекта в свой запрос GraphQL.
Мой тип выглядит следующим образом:

Код: Выделить всё

[Node]
public class Speaker
{
[ID]
public int Id { get; set; }

public string? Name { get; set; }

public string? Bio { get; set; }

public virtual string? WebSite { get; set; }

public ICollection SessionSpeakers { get; set; } = new List();
}
Мой запрос следующий:

Код: Выделить всё

query {
node(id: 1) {
id
... on Speaker {
bio
id
name
webSite
}
}
}
Я получаю следующее сообщение об ошибке:

Код: Выделить всё

The argument literal representation is HotChocolate.Language.IntValueNode which is not compatible with the request literal type HotChocolate.Language.StringValueNode
Я изменил идентификатор на строку, а не на целое число. Я получаю следующее сообщение об ошибке:

Код: Выделить всё

query {
node(id: "1") {
id
... on Speaker {
bio
id
name
webSite
}
}
}

Код: Выделить всё

Unable to decode the id string.
Согласно документации, идентификаторы реле имеют специальный формат. Имя типа + идентификатор в base64. Когда я указываю идентификатор типа «Speaker1» -> Base 64 «U3BlYWtlcjE=", я получаю другое сообщение об ошибке:

Код: Выделить всё

Unable to decode the id string.

Код: Выделить всё

query {
node(id: "U3BlYWtlcjE=") {
... on Speaker {
bio
id
name
webSite
}
}
}
Что я делаю не так? В каком же формате мне следует предоставить идентификатор?
Я пишу конечную точку Graphql для службы, которая использует int для идентификатора. Как лучше всего это сделать?

Подробнее здесь: https://stackoverflow.com/questions/787 ... f-integers

Вернуться в «C#»