Gatsby / GraphQL如何按数字而不是按字母顺序对整数字段排序?

时间:2020-08-20 15:35:53

标签: graphql gatsby

我正在建立一个Gatsby网站(v2.24.47),从那里我从CSV文件中提取数据以及书中有关页面的信息。这是使用gatsby-transformer-csv加载的,并且我使用自定义架构来确保将列page_num转换为Int类型的字段。但是好像Gatsby正在按字母顺序 而不是数值对字段进行排序。例如,如果我查询第12页之后的所有页面,则它包括第8页和第9页,实际上,仅对页面进行排序也会按字母顺序返回它们。我需要对页面进行数字排序。有办法吗?

任何帮助将不胜感激。我在下面提供了一个最小的示例。


gatsby-config.js

module.exports = {
  plugins: [
    {
      resolve: `gatsby-source-filesystem`,
      options: {
        path: `${__dirname}/data/`,
      }
    },
    `gatsby-transformer-csv`
  ],
}

gatsby-node.js

exports.createSchemaCustomization = ({ actions, schema }) => {
    const { createTypes } = actions
    createTypes(`
        type PagesCsv implements Node @dontInfer {
            page_num: Int
        }
    `)
}

data / pages.csv

page_num
8
9
10
11
12
13
14

GraphQL查询(在GraphiQL中)

query MyQuery {
  allPagesCsv(filter: {page_num: {gt: 12}}) {
    nodes {
      page_num
    }
  }
}

返回

{
  "data": {
    "allPagesCsv": {
      "nodes": [
        {
          "page_num": 8
        },
        {
          "page_num": 9
        },
        {
          "page_num": 13
        },
        {
          "page_num": 14
        }
      ]
    }
  },
  "extensions": {}
}

类似地,查询allPagesCsv(sort: {fields: page_num})将以字母顺序10、11、12、13、14、8、9返回页面。

0 个答案:

没有答案