7
如果我想連接一個mongo數據庫到graphql模式,我需要貓鼬ORM還是我可以只做原始驅動程序調用?我需要mongoose和graphql嗎?
如果我想連接一個mongo數據庫到graphql模式,我需要貓鼬ORM還是我可以只做原始驅動程序調用?我需要mongoose和graphql嗎?
你可以同時做。
如果您已經定義了貓鼬模型,您可以在編寫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類型和模式。
如果您不傳遞迴調,貓鼬會重新承諾。您可以簡單地在解析函數中返回'TODO.find()'。 – ocolot