GraphQL 将时间字段转换为数字

GraphQL transforming time field to number

我在降价文件(在 netlify cms 中生成)中有如下内容:

我不确定 vs code 中的语法突出显示是否正在处理 startTimeendTime 的值,或者这是 markdown 本身的东西还是它在 netlify 中的创建方式cms.

但无论哪种方式,graphQL 似乎都将一个读取为数字,将另一个读取为字符串:

我尝试按如下方式在 gatsby-node.js 中创建类型定义,但是当我检查控制台输出时,我发现为时已晚,它被赋予值 1200 和 1080 而不是 18:00和 20:00

exports.createSchemaCustomization = ({ actions, schema }) => {
    const { createTypes } = actions
    const typeDefs = [
        schema.buildObjectType({
            name: 'MarkdownRemark',
            fields: {
                frontmatter: 'Frontmatter!'
            },
            interfaces: ['Node'],
            extensions: {
                infer: true,
            },
        }),
        schema.buildObjectType({
            name: 'Frontmatter',
            fields: {
                startTime: {
                    type: 'String!',
                    resolve(parent) {
                        console.log(parent.startTime);
                        return `${parent.startTime}`;
                    }
                },
                endTime: {
                    type: 'String!',
                    resolve(parent) {
                        console.log(parent.endTime);
                        return `${parent.endTime}`;
                    }
                }
            }
        }),
    ]
    createTypes(typeDefs)
}

有什么方法可以在 Netlify 的 config.yml 中指定不将此字段视为数字?还是我看错地方了?

这就是我在 config.yml 中声明字段的方式:

- { label: "Start Time", name: startTime, widget: string}
- { label: "End Time", name: endTime, widget: string}

但是现在当我查看 github 时,我看到了一些非常奇怪的结果:

在你的 config.yml 中使用 Netlify 提供的 datetime widget and the format options:

- { name: startTime, label: "Start Time", widget: datetime, date_format: MM/DD/YYYY, time_format: false, format: L }
- { name: endTime, label: "EndTime", widget: datetime, date_format: MM/DD/YYYY, time_format: false, format: L },

将您的 date_format(MM/DD/YYYY) 更改为任何所需的格式。

请记住,Netlify datetime 小部件使用 momentjs,检查它们的格式选项以获得适合您的格式。