使用gatsby-source-google-spreadsheet时GraphQL数字转字符串如何解决
Gatsby谷歌表格数据源保留数字字段类型的解决方案
方法1:插件侧配置(最稳定,推荐)
gatsby-source-google-spreadsheet插件原生支持通过typeMap配置项自定义字段类型,你只需要在gatsby-config.js的插件配置中添加对应字段的类型声明即可:
module.exports = { plugins: [ { resolve: "gatsby-source-google-spreadsheet", options: { // 保留你原有配置:spreadsheetId、apiKey/credentials、sheetName等参数 typeMap: { // 替换为你实际的工作表名称 你的工作表名: { // 整数类型字段指定为Int,带小数的数字指定为Float 字段名1: "Int", 字段名2: "Float" } } } } ] }
配置完成后重启Gatsby服务,重新拉取数据后对应字段就会保留数字类型。
方法2:表格侧调整(无需修改代码)
如果不想修改项目配置,也可以通过调整谷歌表格的格式实现:
- 选中对应数字列,右键选择「数字格式」→ 确认设置为「数字」类型,不要设置为「自动」或者「纯文本」
- 检查整列所有单元格,确保没有空格、换行、文字注释等非数字内容,避免插件识别为混合类型默认转字符串
兜底方案:Gatsby Schema自定义
如果以上两种方式都不生效,你可以通过Gatsby的schema自定义API强制指定字段类型,在项目根目录的gatsby-node.js中添加如下代码:
exports.createSchemaCustomization = ({ actions }) => { const { createTypes } = actions // 注意将GoogleSpreadsheet{你的工作表名}替换为实际的GraphQL类型名,字段类型按需指定Int/Float const typeDefs = ` type GoogleSpreadsheetSheet1 implements Node { 你的数字字段名: Int } ` createTypes(typeDefs) }
内容的提问来源于stack exchange,提问作者Hanie Asemi
相关产品推荐
相关产品推荐

