2016-08-05 11 views
1

私は次の関係をつかむためにアポロ/ graphql/sequelizeを使用します。流星アポロgraphql/sequelizeキャッシュクエリの結果を

私は複数のマーカーを持っています。それぞれには1つのスタイルしかありません。マーカーは、同じスタイルを使用することもできます。

Sequelize:

var Marker = db.define('markers', { 
    name: {type: Sequelize.TEXT}, 
    idstyle: {type: Sequelize.INTEGER}, 
}, {timestamps: false}); 
const Markers = db.models.markers; 

var Style = db.define('styles', { 
    name: {type: Sequelize.TEXT}, 
    icon: {type: Sequelize.TEXT} 
}, {timestamps: false}); 

Marker.belongsTo(Style, {foreignKey: 'idstyle'}); 

graphqlスキーマ:

type Marker { 
    id: Int 
    name: String 
    style: Style 
} 

type Style { 
    id: Int 
    name: String 
    icon: String 
} 

type Query { 
    marker(limit: Int, offset: Int): [Marker] 
    style(limit: Int, offset: Int): [Style] 
} 

リゾルバ:

Query: { 
     async marker(root, args, context) { 
      return Markers.findAll({limit: args.limit, offset: args.offset}); 
     }, 
     async style(root, args, context) { 
      return Styles.findAll({limit: args.limit, offset: args.offset}); 
     } 
    }, 
    Marker: { 
     async style(marker) { 
      return marker.getStyle(); 
     } 
    } 

私はいかなる知的があるように思われないことに気づきました次のクエリを実行するとキャッシング:

query{ 
    marker{ 
    name 
    style{ 
     name 
    } 
    } 
} 

別のマーカーの結果として既に返されている場合でも、同じスタイルが再度クエリされたようです。あなたは、要求された形式のIDを繰り返していることがわかります。

enter image description here

答えて