我是否需要使用graphql进行mongoose?

omg*_*mgj 7 mongodb graphql

如果我想将mongo数据库连接到graphql架构,我是否需要mongoose ORM或者我可以只进行原始驱动程序调用?

Ahm*_*ous 7

你可以做到这两点.

如果已经定义了mongoose模型,则可以在编写resolve函数时使用它们.请参阅以下示例.

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)
          })
        })
      }
    }
  })
})
Run Code Online (Sandbox Code Playgroud)

如果你没有猫鼬模型或者你想使用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)
    })
  })
}
Run Code Online (Sandbox Code Playgroud)

如果你有猫鼬模型和你想生成他们GraphQL模式,你可能感兴趣的涂鸦猫鼬,从现有的猫鼬模型生成GraphQL类型和模式.

  • 如果您不通过回调,猫鼬将重新执行诺言。您可以在resolve函数中简单地返回`TODO.find()`。 (2认同)