我正在建立一个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返回页面。