【问题标题】:meteor apollo graphql/sequelize cache query results to avoid multiple identical queriesmeteor apollo graphql/sequelize 缓存查询结果,避免多次相同查询
【发布时间】: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 重复:

【问题讨论】:

    标签: javascript meteor sequelize.js graphql apollo


    【解决方案1】:
    猜你喜欢
    • 1970-01-01
    • 2020-03-21
    • 2019-01-09
    • 2020-11-02
    • 2021-08-05
    • 2017-03-19
    • 2022-11-19
    • 2022-01-09
    • 2018-10-19
    相关资源
    最近更新 更多