【问题标题】:Do I need mongoose with graphql?我需要带有graphql的猫鼬吗?
【发布时间】:2016-09-11 06:49:00
【问题描述】:

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

【问题讨论】:

    标签: mongodb graphql


    【解决方案1】:

    两者都可以。

    如果您已经定义了猫鼬模型,您可以在编写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)
              })
            })
          }
        }
      })
    })
    

    如果你没有 mongoose 模型或者你想使用 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 感兴趣,它会从现有的 mongoose 模型中生成 GraphQL 类型和架构。

    【讨论】:

    • 如果你没有通过回调,Mongoose 会重新运行一个承诺。您可以简单地在解析函数中返回TODO.find()
    猜你喜欢
    • 2015-11-27
    • 2013-10-22
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    • 2017-12-13
    • 1970-01-01
    相关资源
    最近更新 更多