आपको देखना चाहिए GraphQL-to-MongoDB, या मैंने कैसे चिंता करना बंद करना सीखा और जेनरेट की गई क्वेरी API को पसंद किया . यह एक मिडलवेयर पैकेज के बारे में बात करता है जो आपके ग्राफक्यूएल एपीआई को उत्पन्न करने के लिए ग्राफक्यूएल के प्रकारों का लाभ उठाता है और क्लाइंट से मोंगोडीबी प्रश्नों में भेजे गए अनुरोधों को पार्स करता है। यह कमोबेश नेवला पर छोड़ देता है।
अस्वीकरण:यह मेरा ब्लॉग पोस्ट है।
पैकेज आपके स्कीमा फ़ील्ड args के लिए GraphQL इनपुट प्रकार उत्पन्न करता है, और उन्हें MongoDB प्रश्नों में पार्स करने के लिए समाधान फ़ंक्शन के चारों ओर लपेटता है।
एक साधारण GraphQLType दिया गया:
const PersonType = new GraphQLObjectType({
name: 'PersonType',
fields: () => ({
age: { type: GraphQLInt },
name: {
type: new GraphQLNonNull(new GraphQLObjectType({
name: 'NameType',
fields: () => ({
firstName: { type: GraphQLString },
lastName: { type: GraphQLString }
})
}))
}
})
});
सबसे आम उपयोग के मामले के लिए, आप GraphQL स्कीमा में एक getMongoDbQueryResolver
के साथ एक फ़ील्ड बनाएंगे और getGraphQLQueryArgs
. filter
, projection
, और options
रैपर द्वारा प्रदान किया गया सीधे खोज समारोह में भेजा जा सकता है।
person: {
type: new GraphQLList(PersonType),
args: getGraphQLQueryArgs(PersonType),
resolve: getMongoDbQueryResolver(PersonType,
async (filter, projection, options, source, args, context) =>
await context.db.collection('person').find(filter, projection, options).toArray()
)
}
एक क्वेरी का एक उदाहरण जिसे आप ऐसे क्षेत्र में भेज सकते हैं:
{
person (
filter: {
age: { GT: 18 },
name: {
firstName: { EQ: "John" }
}
},
sort: { age: DESC },
pagination: { limit: 50 }
) {
name {
lastName
}
age
}
}
उत्परिवर्तन क्षेत्रों के लिए एक आवरण और तर्क प्रकार जनरेटर भी है।