首页 > 解决方案 > 查询多对多 graphql 和 sqlite

问题描述

我正在尝试创建一个 Angular7 + graphql + sqlite 游戏应用程序,但我被卡住了。

我有 3 个数据库表,一个用于游戏,另一个用于流派,第三个作为游戏和流派之间的关系表。

我想在graphql上做的基本上就是这个join:

SELECT G.*, GN.genre FROM Games AS G
LEFT JOIN Game_Genre AS GG ON G.id  = GG.game_id 
LEFT JOIN Genre AS GN ON GG.genre_id  = GN.id 
WHERE G.id={GAMEID}

预期结果

我设法创建查询来列出所有游戏和单个游戏,但我无法进行任何查询来列出游戏及其类型。

这是我正在使用的架构:

const schema = buildSchema(`
    type Query {
    games(offset:Int = 0, limit:Int = 100): [Games]
    game(id:ID!): Games
}

type Games {
    id: ID
    game_art: String
    game_title: String
    game_serial: String
    game_region: String
    release_year: Int
    players: Int
    developer: String
    publisher: String
}

type Genre {
  id: ID
  genre: String
}

type Game_Genre {
  id: Int
  game_id: Games
  genre_id: Genre
}`);

const root = {
games: args => {
    return query(
        `SELECT * FROM Games LIMIT ${args.offset}, ${args.limit}`,
        false
    );
},
game: args => {
    return query(`SELECT * FROM Games WHERE id='${args.id}'`, true);
}};

先感谢您

标签: graphql

解决方案


推荐阅读