हॉट चॉकलेट वर्कशॉप के बाद और चौथे चरण के बाद, क्वेरी चलाते समय
query GetSpecificSpeakerById {
a: speakerById(id: 1) {
name
}
b: speakerById(id: 1) {
name
}
}
मुझे निम्न त्रुटि मिल रही है।
The ID `1` has an invalid format.
साथ ही, सभी प्रश्नों के लिए एक ही त्रुटि फेंक दी गई है जिसमें पैरामीटर के रूप में आईडी है, शायद यह एक संकेत हो सकता है, क्या जांचना है, मेरे लिए, एक व्यक्ति, जो अभी कार्यशाला चलाता है, यह अभी भी अस्पष्ट है।
इसी तरह के प्रश्न में उत्तर (स्वीकृत नहीं) के आधार पर HotChocolate से पूछताछ करते समय त्रुटि "आईडी `1` का एक अमान्य प्रारूप है", मैंने रिले और इसकी कॉन्फ़िगरेशन की जांच की है और अच्छा लग रहा है।
डि
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton(CreateAutomapper());
services.AddPooledDbContextFactory<ApplicationDbContext>(options =>
options.UseSqlite(CONNECTION_STRING).UseLoggerFactory(ApplicationDbContext.DbContextLoggerFactory));
services
.AddGraphQLServer()
.AddQueryType(d => d.Name(Consts.QUERY))
.AddTypeExtension<SpeakerQueries>()
.AddTypeExtension<SessionQueries>()
.AddTypeExtension<TrackQueries>()
.AddMutationType(d => d.Name(Consts.MUTATION))
.AddTypeExtension<SpeakerMutations>()
.AddTypeExtension<SessionMutations>()
.AddTypeExtension<TrackMutations>()
.AddType<AttendeeType>()
.AddType<SessionType>()
.AddType<SpeakerType>()
.AddType<TrackType>()
.EnableRelaySupport()
.AddDataLoader<SpeakerByIdDataLoader>()
.AddDataLoader<SessionByIdDataLoader>();
}
स्पीकर प्रकार
public class SpeakerType : ObjectType<Speaker>
{
protected override void Configure(IObjectTypeDescriptor<Speaker> descriptor)
{
descriptor
.ImplementsNode()
.IdField(p => p.Id)
.ResolveNode(WithDataLoader);
}
// implementation
}
और खुद से सवाल करें
[ExtendObjectType(Name = Consts.QUERY)]
public class SpeakerQueries
{
public Task<Speaker> GetSpeakerByIdAsync(
[ID(nameof(Speaker))] int id,
SpeakerByIdDataLoader dataLoader,
CancellationToken cancellationToken) => dataLoader.LoadAsync(id, cancellationToken);
}
लेकिन बिना किस्मत के। क्या कुछ और है, मैं क्या जाँच सकता हूँ? पूरा प्रोजेक्ट मेरे GitHub पर उपलब्ध है।
1 उत्तर
मुझे लगता है कि आपने इस परियोजना पर रिले समर्थन सक्षम किया है। समापन बिंदु एक मान्य रिले आईडी को निष्पादित करता है।
रिले क्लाइंट को अपारदर्शी आईडी दिखाता है। आप इसके बारे में यहां और अधिक पढ़ सकते हैं: https://graphql.org/learn/global-object-identification/
संक्षेप में, एक रिले आईडी टाइपनाम और आईडी का बेस 64 एन्कोडेड संयोजन है।
ब्राउज़र में एन्कोड या डीकोड करने के लिए आप कंसोल पर बस atob
और btoa
का उपयोग कर सकते हैं।
तो आईडी "U3BlYWtlcgppMQ=="
में मान होता है
"Speaker
i1"
आप इस मान को ब्राउज़र में btoa("U3BlYWtlcgppMQ==")
के साथ डीकोड कर सकते हैं और स्ट्रिंग को एन्कोड कर सकते हैं
atob("Speaker
i1")
तो यह क्वेरी काम करेगी:
query GetSpecificSpeakerById {
a: speakerById(id: "U3BlYWtlcgppMQ==") {
id
name
}
}
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
graphql
ग्राफकॉल एक एपीआई तकनीक है जिसे आधुनिक वेब अनुप्रयोगों के जटिल, नेस्टेड डेटा निर्भरता का वर्णन करने के लिए डिज़ाइन किया गया है। इसे अक्सर SOAP या REST का विकल्प माना जाता है