如何使用GraphQL获取MySQL所有表数据

时间:2018-08-24 09:01:01

标签: mysql reactjs express graphql

我是GraphQL的新手,所以我想在Express服务器中获取MySQL的所有表数据,然后将其推送到ReactJS。我该怎么做?

1 个答案:

答案 0 :(得分:0)

将Knex连接到(db / db.js)中的数据库:

const config = require('../../config/config');
const knex = require('knex')(config.config);

module.exports = knex;

需要GraphQL和Knex(DB):

const graphql = require('graphql');
const knex = require('./db/db');

const { 
    GraphQLObjectType, 
    GraphQLString, 
    GraphQLSchema,
    GraphQLID,
    GraphQLInt,
    GraphQLList,
    GraphQLNonNull
 } = graphql;

假设您有一种图书类型:

// Your book type
const BookType = new GraphQLObjectType({
    name: 'Book',
    fields: () => ({
        id: { type: GraphQLID },
        name: { type: GraphQLString },
        genre: { type: GraphQLString },
    })
});

// Prepare query to get all books, I used Knex query builder with MySQL
const RootQuery = new GraphQLObjectType({
    name: 'RootQueryType', 
    fields: {
        books: {
            type: new GraphQLList(BookType),
            async resolve(parent, args){
              const books = await knex('books');
              return books;
            }
        },
    }
});