Как вернуть результат необработанного запроса (Sequelize) в GraphQL - PullRequest
0 голосов
/ 04 июня 2018

Я новичок в GraphQL и Sequelize, но я разработал тест, в котором я могу создавать запросы и получать результаты из Graphiql, используя функции Sequalize, но мне интересно создавать более сложные запросы с запросами из нескольких таблиц.

Теперь этот код работает нормально:

schema.js

import {
    GraphQLObjectType,
    GraphQLNonNull,
    GraphQLID,
    GraphQLInt,
    GraphQLString,
    GraphQLFloat,
    GraphQLList,
    GraphQLSchema
} from "graphql";
import { DB } from "../db";
import {DateTime} from "../scalar/dateTime";
import {Player} from "./Player";
import {League} from "./League";
import {Group} from "./Group";
import {Season} from "./Season";

const Query = new GraphQLObjectType({
    name: "Query",
    description: "This is root query",
    fields: () => {
        return {
            players: {
                type: GraphQLList(Player),
                args: {
                    id: {
                        type: GraphQLID
                    }
                },
                resolve(root, args){
                    return DB.db.models.tbl003_player.findAll({where: args});
                }
            },
            leagues: {
                type: GraphQLList(League),
                args: {
                    id: {
                        type: GraphQLID
                    }
                },
                resolve(root, args){
                    return DB.db.models.tbl001_league.findAll({where: args});
                }
            },
            groups: {
                type: GraphQLList(Group),
                args: {
                    id: {
                        type: GraphQLID
                    }
                },
                resolve(root, args){
                    return DB.db.models.tbl024_group.findAll({where: args});
                }
            },
            seasons: {
                type:GraphQLList(Season),
                args: {
                    id: {
                        type: GraphQLID
                    } 
                },
                resolve(root, args){
                    return DB.db.models.tbl015_seasons.findAll({where: args})
                }
            }
        }
    }
});

const Schema = new GraphQLSchema({
    query: Query
});

module.exports.Schema = Schema;

Итак, я хотел бы сделать простой тест, чтобы узнать, каквернуть данные из необработанного запроса в GraphQL.Я прочитал, что метод разрешения возвращает обещание, и я попытался вернуть обещание с результатом запроса, но он не работает.

    players: {
        type: GraphQLList(Player),
        args: {
            id: {
                type: GraphQLID
            }
        },
        resolve(root, args){
            DB.db.query("select * from tbl003_player where id = 14",
            {raw: true, type: DB.db.QueryTypes.SELECT}).then((players)=>{
                let myPromise = new Promise((resolve, reject)=>{
                    resolve(players);
                });
                return myPromise;
            }).catch((reject)=>{
                console.log("Error: " + reject);
            });
        }
    },

Следовательно, как я могу вернуть данные из запроса с помощью Sequelize в GraphQL?

1 Ответ

0 голосов
/ 04 июня 2018

Верните обещание, которое вы получите от продолжения.Вы также делаете много работы, которая не требуется после вашего обещания.Может быть, прочитайте больше об обещаниях, прежде чем двигаться дальше:)

resolve(root, args){
  return DB.db.query(
    "select * from tbl003_player where id = 14",
    { raw: true, type: DB.db.QueryTypes.SELECT }
  );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...