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