我有一个node.js服务器,它使用sequelize和graphql来提供GraphQL端点。
在GraphQL查询输出中,与belongsTo
链接的某些对象字段始终为null
。
这是我的graphql typedef:
type Student {
id: ID!
name: String!
age: Int!
schoolClass: SchoolClass
}
type SchoolClass {
id: ID!
title: String!
}
以下是如何定义续集模型
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
}
]
}
}
有没有办法获取实际数据而不是空值?
答案 0 :(得分:2)
默认情况下,Sequelize在调用findAll
时不会填充关系创建的任何字段。您必须使用include
选项指定要包含查询的关系。有关详细信息,请参阅the docs。
此外,findAll
只接受一个参数(一个选项对象),而且我不太确定你要通过将上下文传递给模型来做什么。这应足以让所有学生与他们相关的学校课程:
return models.Student.findAll({ include: [ 'SchoolClass' ] })
Check out the reference代表findAll
了解有关可以使用的选项的更多信息。