【问题标题】:Graphql custom defined joinGraphql 自定义连接
【发布时间】:2018-01-15 03:05:19
【问题描述】:

我使用 sequelize 为基于 js 的 graphql 服务器定义了以下表格(为简洁起见,省略了许多其他实体)

const MetaData = sequelize.define(
  "MetaData",
  {
    MetaID: {
        type: Sequelize.INTEGER,
        autoIncrement: true,
        primaryKey: true
    },
    EntityID: {
        type: Sequelize.INTEGER
    },
    EntityType: {
        type: Sequelize.STRING
    },
    MetaKey: {
        type: Sequelize.STRING
    },
    MetaValue: {
        type: Sequelize.STRING
    }
  }
);
const Staff = sequelize.define(
  "staff",
  {
    staffID: {
        type: Sequelize.INTEGER,
        autoIncrement: true,
        primaryKey: true
    },
    email: {
        type: Sequelize.STRING
    },
    firstName: {
        type: Sequelize.STRING
    },
    lastName: {
        type: Sequelize.STRING
    }
  }
);
const Person = sequelize.define(
  "Person",
  {
    personID: {
        type: Sequelize.INTEGER,
        autoIncrement: true,
        primaryKey: true
    },
    firstName: Sequelize.STRING,
    lastName: Sequelize.STRING
  }
);

元数据表的示例是

[{
 EntityID: 5,
 EntityType: "Staff",
 MetaKey: "Active",
 MetaValue: "true"
},{
 EntityID: 5,
 EntityType: "Person",
 MetaKey: "HairColor",
 MetaValue: "Blue"
}]

有没有办法在graphqlsequelize 中创建一个查询,该查询将返回与请求的类型关联的元数据? 自定义解析器是否能够在不进行大量额外调用的情况下解决此解决方案?

例如,当我请求工作人员时,我希望能够接收所有相关的元数据。

编辑: 根据the sequelize docs on polymorphic associations 我添加了以下内容,但没有返回数据

Staff.MetaData = Staff.hasMany(MetaData, {
  foreignKey: 'EntityID',
  constraints: 'false',
  scope: {
      EntityType: 'Staff'
  }
});
MetaData.belongsTo(Staff, {
  foreignKey: 'EntityID',
  constraints: false,
  as: 'Staff'
});

MetaData.getItem = function () {
  return this['get' + this.get('EntityType')]();
};

【问题讨论】:

    标签: javascript sequelize.js graphql


    【解决方案1】:

    原来我在 resolvers.js 中错过了一个调用

    Staff: {
      MetaData: resolver(Staff.MetaData)
    }
    

    【讨论】:

      猜你喜欢
      • 2016-11-13
      • 2018-05-29
      • 2020-07-04
      • 2018-11-03
      • 1970-01-01
      • 2020-08-03
      • 2021-12-20
      • 2016-01-27
      • 2014-11-07
      相关资源
      最近更新 更多