2016-05-15 12 views
7

यदि मैं ग्राफिक स्कीमा में एक मोंगो डेटाबेस कनेक्ट करना चाहता हूं, तो क्या मुझे मोंगोज़ ओआरएम चाहिए या क्या मैं सिर्फ कच्चे ड्राइवर कॉल कर सकता हूं?क्या मुझे ग्राफक्ल के साथ मोंगोज़ चाहिए?

उत्तर

6

आप दोनों कर सकते हैं।

यदि आपके पास पहले से ही परिभाषित मोन्गोज मॉडल हैं, तो आप resolve फ़ंक्शंस लिखते समय उनका उपयोग कर सकते हैं। following example देखें।

var QueryType = new GraphQLObjectType({ 
    name: 'Query', 
    fields:() => ({ 
    todos: { 
     type: new GraphQLList(TodoType), 
     resolve:() => { 
     return new Promise((resolve, reject) => { 
      TODO.find((err, todos) => { 
      if (err) reject(err) 
      else resolve(todos) 
      }) 
     }) 
     } 
    } 
    }) 
}) 

आप नेवला मॉडल नहीं है, तो या आप MongoDB देशी ड्राइवर का उपयोग करना चाहते हैं, आप ऐसा भी कर सकते हैं। MongoDB Node.JS Driver का उपयोग करके ऐसा करने का एक सरल उदाहरण निम्नलिखित है।

resolve:() => { 
    return new Promise((resolve, reject) => { 
    db.collection('todos').find({}).toArray((err, todos) => { 
     if (err) reject(err) 
     else resolve(todos) 
    }) 
    }) 
} 

आप नेवला मॉडल है और आप उन लोगों से GraphQL स्कीमा उत्पन्न करना चाहते हैं, तो आप graffiti-mongoose में रुचि हो सकती है, जो मौजूदा नेवला मॉडल से GraphQL प्रकार और स्कीमा उत्पन्न करता है।

+1

यदि आप कॉलबैक पास नहीं करते हैं तो मोंगोस एक वादा वापस कर देता है। आप संकल्प फ़ंक्शन में 'TODO.find() 'को वापस कर सकते हैं। – ocolot

संबंधित मुद्दे