无法在 Gatsby 站点的 GraphQL 中格式化日期

Mos*_*she 5 firebase graphql gatsby google-cloud-firestore

我在 Gatsby 中格式化日期时遇到问题。我从firestore获取了一些数据。我获取的字段之一被称为datePublished,它包含一个时间戳形式的数字(例如,1576945502000)。事实上,它确实是一个时间戳,但它以number格式类型保存到 firestore 。

现在,我想datePublished使用formatStringgraphql 中的函数来格式化该字段——如此处所述:https ://www.gatsbyjs.org/docs/graphql-reference/#dates

但我无法让格式工作。无论我尝试在 graphiql 中还是在我的网站上格式化字符串,它都不起作用。这是我尝试过的代码:

query MyQuery {
  allNewsFeed {
    edges {
      node {
        published(formatString:"dddd Mo, YYYY")
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这是我在 graphiql 中得到的错误消息:

“NewsFeed”类型的字段“datePublished”上的未知参数“formatString”。

如果我深入挖掘,我会注意到 firestore 中的字段类型被列为,number并且在 graphiql 文档资源管理器中它被列为FloatQueryOperatorInput.

更重要的是,我做了一个小实验,我尝试为同一个号码保存为一个stringnumbertimestamp在公司的FireStore。无论是字符串还是数字格式都不起作用,无论出于何种原因,gatsby-firesource插件都不会使用timestamp格式。

所以我想知道,我该怎么做才能让它在 gatsby 中工作?

有任何想法吗?

谢谢。

小智 1

我遇到了类似的情况,盖茨比不接受日期字段上的“formatString”,对我来说,解决问题的方法是将字段的格式更改为,YYYY-MM-DD以便它从02 06 2017变为2017-06-02,盖茨比得到了该字段代表日期的提示。盖茨比似乎“读取”数据并猜测类型,并基于此我们获得了某些功能。

由于 gatsby 使用 moment.js 我猜测YYYY-MM-DD它会采用该格式。

我正在使用 MDX,所以更改日期字段的格式对我来说真的很容易,因为它只是纯文本,我不确定您对 firestore 有同样的享受,但我希望这至少能给您一些尝试的想法出去。祝你好运!