我有一个使用sequelize和graphql来提供GraphQL端点的node.js服务器。
不知何故,与 belongsTo
链接的对象字段在 GraphQL 查询输出中始终为 null
。
这是我的 graphql typedef:
type Student {
id: ID!
name: String!
age: Int!
schoolClass: SchoolClass
}
type SchoolClass {
id: ID!
title: String!
}
这是如何定义sequelize模型
const SchoolClass = sequelize.define('SchoolClass', {
title: Sequelize.STRING
});
const Student = sequelize.define('Student', {
name: Sequelize.STRING,
age: Sequelize.TINYINT
});
Student.belongsTo(SchoolClass);
解析器是
students (root, args, context) {
return models.Student.findAll({}, context);
}
查询:
{
students {
id, name, age, schoolClass { id }
}
}
典型输出:
{
"data": {
"students": [
{
"id": "1",
"name": "John",
"age": "18",
"schoolClass": null
}
]
}
}
有没有办法获取实际数据而不是空值?
最佳答案
默认情况下,Sequelize 不会填充调用 findAll
时由关系创建的任何字段。您必须使用 include
选项来指定要包含查询的关系。请参阅the docs了解更多信息。
此外,findAll
仅接受一个参数(一个选项对象),而且我不太确定您想通过将上下文传递给模型来做什么。这应该足以让所有学生及其关联的 schoolClass:
return models.Student.findAll({ include: [ 'SchoolClass' ] })
Check out the reference findAll
了解有关可以使用哪些选项的更多信息。
关于node.js graphql/sequelize 服务器为链接属性返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48353943/