1

Apollo/graphql/sequelize を使用して、次の関係を取得します。

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

続編:

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 が繰り返されていることがわかります。

ここに画像の説明を入力

4

1 に答える 1