【发布时间】: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"
}]
有没有办法在graphql 或sequelize 中创建一个查询,该查询将返回与请求的类型关联的元数据?
自定义解析器是否能够在不进行大量额外调用的情况下解决此解决方案?
例如,当我请求工作人员时,我希望能够接收所有相关的元数据。
编辑: 根据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