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