如果我想将mongo数据库连接到graphql架构,我是否需要mongoose ORM或者我可以只进行原始驱动程序调用吗?
答案 0 :(得分:6)
你可以做到这两点。
如果您已经定义了mongoose模型,则可以在编写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)
})
})
}
如果您有mongoose模型并且想要从它们生成GraphQL模式,您可能会对graffiti-mongoose感兴趣,它会从现有的猫鼬模型中生成GraphQL类型和模式。