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

时间:2019-12-25 13:47:20

标签: firebase google-cloud-firestore graphql gatsby

我无法在Gatsby中格式化日期。我已经从Firestore中获取了一些数据。我获得的字段之一称为datePublished,其中包含时间戳形式的数字(例如1576945502000)。确实,这确实是一个时间戳,但是它以number格式类型保存到了Firestore中。

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

但是我无法进行格式化。无论我尝试在graphiql中还是在我的网站上格式化字符串,都无法正常工作。这是我尝试过的代码:

query MyQuery {
  allNewsFeed {
    edges {
      node {
        published(formatString:"dddd Mo, YYYY")
      }
    }
  }
}

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

  

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

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

此外,我做了一个小实验,尝试在Firestore中保存与stringnumbertimestamp相同的数字。字符串或数字格式均无效,无论出于何种原因,gatsby-firesource插件都不会以timestamp格式插入字段。

所以我想知道,要使它在gatsby中工作该怎么办?

有什么想法吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

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

由于gatsby使用moment.js,所以我猜想YYYY-MM-DD格式已被采用。

我使用的是MDX,因此更改日期字段的格式非常简单,因为它只是纯文本,我不确定您是否拥有与Firestore相同的功能,但我希望这至少能给您一些帮助尝试的想法。祝你好运!