GraphQL和从Oracle数据库中提取数据:查询回应与ResultSet和不来的Graphql解

2019-10-30 13:23发布

我是新来GraphQL。

开始开发一个GraphQL应用从Oracle数据库中提取数据。

这是非常简单的应用程序。 查询与响应resultset ,并可以看到结果console.log ; 然而,它不来到graphql窗口(响应/分解器窗口)。 它引发错误

不能对非User.email返回null

我试图在Oracle连接的承诺。 不知道,为什么它没有显示在GraphQL数据。

UserType.js

module.exports = new GraphQLObjectType({
  name: 'User',

  fields: () => {
    return{
      id: { type: GraphQLID },
      email: { type: new GraphQLNonNull(GraphQLString) }
    }
  }
});

DBConnection.js

module.exports = oraPool => {
  return  {
    getUsers(apiKey){
      return oracledb.createPool(oraConfig).then(function() {
    console.log("Connection Pool created");
    return oracledb.getConnection().then(function(conn) {
      return conn.execute(
        //`SELECT 'User ' || JSON_OBJECT ('id' VALUE id, 'email' VALUE email) FROM users where id = :id`
        `SELECT  * FROM users WHERE id = :id`
        ,[apiKey]).then(result => {
          //console.log(result.metaData);
          console.log(humps.camelizeKeys(result.rows[0]));
          conn.close();
          return humps.camelizeKeys(result.rows[0]);
        })
        .catch(function(err) {
          console.log(err.message);
          return connection.close();
        });
      })
      .catch(function(err) {
        console.error(err.message);
      });
    })
      }
    }
  }

Type.js

const RootQueryType = new GraphQLObjectType({
  name: 'RootQueryType',

  fields: {
    user: {
      type: UserType,
      args: {
    key: { type: new GraphQLNonNull(GraphQLString) }
      },
      resolve: (obj, args, { oraPool }) => {
    return oradb(oraPool).getUsers(args.key);
      }

    }
  }
});

Answer 1:

此代码是相当纠结,我建议从头开始。 例如,你调用createPool查询运行每次。 您应该将应用程序的初始化,而不是在创建池。

虽然你说这将是一个简单的应用程序,它可以永远增长。 从头GraphQL服务器创建一个是不平凡的。 我建议引进通过加入怪物一定的帮助。 不幸的是,加入怪物不再正在积极发展。 但是它是相当稳定的,它不是从头开始好了很多。 下面是它如何工作的一个很好的概述: https://github.com/stems/join-monster/tree/master/src

我最近做了一个GraphQL谈话,你可以在这里看到: https://www.slideshare.net/DanielMcGhan/intro-to-graphql-for-database-developers

在演示中,我把我描述了一个简单的API模式本博客系列 ,并适应它是在公共EMP和DEPT演示表一GraphQL服务器。 你可以在这里访问代码: https://www.dropbox.com/s/cnvyrlik7irtbwm/graphql-api.zip?dl=0

此外,我的同事们的另一个谈论GraphQL这里: https://blogs.oracle.com/opal/demo:-graphql-with-node-oracledb



文章来源: GraphQL & Pulling Data from Oracle DB: Query Responds with the Resultset and Doesn't Come to The Graphql resolver Window