2016-05-15 200 views

回答

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