首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方法,用于将快照中的所有Fi还原时间戳转换为JS日期?

问方法,用于将快照中的所有Fi还原时间戳转换为JS日期?
EN

Stack Overflow用户
提问于 2020-08-11 16:26:57
回答 1查看 175关注 0票数 2

您将如何编写方法将快照中的所有Fi还原时间戳转换为JavaScript日期?

例如,来自posts集合的快照可能返回一对Fi还原时间戳(createdDtTm,modifyDtTm):

代码语言:javascript
复制
[
  { 
    text: 'My new post', 
    uid: 'nzjNp3Q', 
    createDtTm: Timestamp { seconds: 1596239999, nanoseconds: 999000000 },
    modifyDtTm: Timestamp { seconds: 1596239999, nanoseconds: 999000000 },  
  }, 
  { 
    text: 'Another post', 
    uid: 'nzjNp3Q', 
    createDtTm: Timestamp { seconds: 1596239999, nanoseconds: 999000000 },
    modifyDtTm: Timestamp { seconds: 1596239999, nanoseconds: 999000000 },  
  }, 
]

通过在数组上映射和对每个时间戳使用toDate()方法(例如,createDtTm.toDate()),转换单个日期非常简单。

但是,在不显式指定时间戳字段的情况下,转换这两个(或任意数量的)Fi还原时间戳的更通用的方法是什么呢?

例如,Fi还原时间戳是否具有可用于标识的唯一类型?是否需要假定命名约定(例如,字段名包含DtTm)?另一个?

前面的问题回答了如何在单时间戳或快照中的多个文档中转换单个时间戳。但是,当存在多个时间戳时,我还没有找到一种在快照中转换所有时间戳的通用方法。更具体地说,我对React Provider中使用的一种方法感兴趣,这种方法可以将JavaScript日期(而不是Fi还原时间戳)传递给它的Consumers,同时也不创建依赖项来在每次向数据模型/集合中添加新的时间戳字段时更新提供程序。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-12 11:10:10

我不认为这有任何全局方法,但是我认为创建一个函数来分析快照并改变它是很容易的。不是很复杂。在node.js中,我这样做了:

代码语言:javascript
复制
function globalToData (snapshot) {
      for (const field in snapshot)
  
    if (snapshot[field] instanceof Firestore.Timestamp) { 
        snapshot[field] = snapshot[field].toDate()
    }
    else if (snapshot[field] instanceof Object) { 
        globalToData (snapshot[field]);
    }
    return snapshot;
}; 

如果你以前任的身份得到DocumentSnapshot。你可以这样称呼它:

代码语言:javascript
复制
globalToData(snap.data())

这将转换文档快照所有级别中的所有时间戳(我测试了第三级嵌套、混合映射和数组)。我们没有您的解决方案,但是您可以在应用程序的某个地方实现这一点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63362436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档