1
我使用Apollo/graphql/sequelize抓住以下關係:流星apollo graphql/sequelize緩存查詢結果,以避免多個相同的查詢
我有多個標記。每個只有一個樣式。標記可以使用相同的樣式:
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
}
}
}
看來,同樣的風格再次查詢,即使它們已經返回爲另一個標記的結果。你可以看到,所要求的風格IDS重複: