node.js graphql/sequelize服务器为链接属性返回null

node.js graphql/sequelize服务器为链接属性返回null,node.js,sequelize.js,graphql-js,Node.js,Sequelize.js,Graphql Js,我有一个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! } 下面是如何定义sequ

我有一个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!
}
下面是如何定义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
选项指定要包含查询的关系。有关更多信息,请参阅

另外,
findAll
只接受一个参数(一个选项对象),我不太确定通过将上下文传递到模型来尝试做什么。这应足以让所有学生及其相关班级:

return models.Student.findAll({ include: [ 'SchoolClass' ] })

对于
findAll
,有关您可以使用哪些选项的详细信息。

学生表是否有class\u id/classId?@VivekDoshi是的,它有SchoolClassId字段,并填写了相应的id(我将class重命名为SchoolClass,以避免将此实体与JS class混淆),请检查此项:,我想这会对您有所帮助问题不在我粘贴的代码范围内,而是在graphql解析器中<代码>返回在函数Student:{class(Student){Student.getClass();}中丢失