Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法将自定义结果从解析程序传递到Graphql_Graphql_Sequelize.js_Apollo - Fatal编程技术网

无法将自定义结果从解析程序传递到Graphql

无法将自定义结果从解析程序传递到Graphql,graphql,sequelize.js,apollo,Graphql,Sequelize.js,Apollo,我正在尝试使用带有属性的sequelize获取数据,并将其传递给graphql。 控制台中的结果很好,但graphql查询为属性字段返回null 我的解析器 getUnpayedLessons: async (_, args, { models }) => { const { Attendance, Student } = models; return await Attendance.findAll({ include: { model: Studen

我正在尝试使用带有属性的sequelize获取数据,并将其传递给graphql。 控制台中的结果很好,但graphql查询为属性字段返回null

我的解析器

    getUnpayedLessons: async (_, args, { models }) => {
  const { Attendance, Student } = models;
  return await Attendance.findAll({
    include: {
      model: Student,
    },
    where: {
      fk_lessonsSerieId: { [Op.is]: null },
    },
    attributes: ["id", [sequelize.fn("count", sequelize.col("absenceFlag")), "unpayedLessons"]],
    group: ["student.id"],
  });
},
质疑

模式

type UnpayedLessons {
  id: Int
  unpayedLessons: Int
  student: Student
  }

extend type Query {
  getUnpayedLessons: [UnpayedLessons]
  }
这是运行查询时解析程序的console.log

    [
   attendance {
    dataValues: { id: 2, unpayedLessons: 8, student: [student] },
    _previousDataValues: { id: 2, unpayedLessons: 8, student: [student] },
    _changed: Set {},
    _options: {
      isNewRecord: false,
     _schema: null,
     _schemaDelimiter: '',
      include: [Array],
      includeNames: [Array],
      includeMap: [Object],
      includeValidated: true,
      attributes: [Array],
      raw: true
     },
]
从graphql

    {
  "data": {
    "getUnpayedLessons": [
      {
        "id": 2,
        "unpayedLessons": null,
        "student": {
          "id": 2,
          "__typename": "Student"
        },
        "__typename": "UnpayedLessons"
      },
     ]
    }
   }

知道如何将unpayedLessons传递给graphql吗?

要调试此功能,您需要检查DB返回的内容,形状:

const values = await Attendance.findAll({...
console.log( values );
// adapt structure to match query requirements
// finally return
return values;

我的错误,实际上是控制台中的结果([Attention{datavalues{…)正是这样。为了清晰起见,我在这里更改了解析器,但我有您在现实中描述的console.log。在我看来,数据值与查询的形状相同。否?
DataValues
不是所需查询结果的一部分-类型为UnpayedLessons的数组…转换/适应所需的形状确定了,它可以工作了!但不太清楚为什么。或者更好的是,为什么以前没有工作。只是自定义属性没有传递,而且在我没有放置自定义属性时形状相同,从来没有出现过任何问题…IDK…嗯,squelize不是为了满足apollo的要求而设计的,但可能apollo可以/被改编为使用一些**常见**/可能的数据结构[从libs/DB/adapters返回]并且能够将它们与所需的返回类型相匹配-不是所有用例
const values = await Attendance.findAll({...
console.log( values );
// adapt structure to match query requirements
// finally return
return values;