meteor apollo graphql/sequelize 缓存查询结果,避免多次相同查询
Posted
技术标签:
【中文标题】meteor apollo graphql/sequelize 缓存查询结果,避免多次相同查询【英文标题】:meteor apollo graphql/sequelize cache query results to avoid multiple identical queries 【发布时间】:2016-12-12 04:13:11 【问题描述】:我使用 Apollo/graphql/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 重复:
【问题讨论】:
【参考方案1】:使用数据加载器:
https://github.com/facebook/dataloader
这是一个使用 Apollo 的示例:
https://github.com/apollostack/GitHunt-API/blob/106204c110980df28b70b565452a61648825d98b/api/github/connector.js
【讨论】:
以上是关于meteor apollo graphql/sequelize 缓存查询结果,避免多次相同查询的主要内容,如果未能解决你的问题,请参考以下文章
带有 Meteor 的 Blaze-Apollo,观察者不会触发变量更改的订阅
meteor apollo graphql/sequelize 缓存查询结果,避免多次相同查询
当我们从 Mongo 控制台更新集合时,Meteor Apollo 没有更新 UI
我无法使用 mongo / mongoose / NO METEOR 设置 react apollo mongodb app => 解析器