node.js - 从 Node.js 中的 Firestore 检索日期
问题描述
从有关保存支持类型的数据的Firestore 文档中,我红色:
var docData = {
//...
dateExample: new Date("December 10, 1815"),
//...
}
};
db.collection("data").doc("one").set(docData).then(function() {
console.log("Document successfully written!");
});
这就是我在 Cloud Functions 中用来将各种日期保存到 Firestore 的方法。效果很好!
当我需要检索这些日期并将它们作为字符串发布到第三方 API 时,我的问题就出现了。
据我了解,在 Firebase/Firestore 中,日期存储为 Unix 时间戳。
我在任何地方都找不到(firebase doc,stackoverflow ...)如何将其正确转换为字符串。
我尝试了以下失败:
function timeConverter(UNIX_timestamp){
var a = new Date(UNIX_timestamp * 1000);
var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
var year = a.getFullYear();
var month = months[a.getMonth()];
var date = a.getDate();
var hour = a.getHours();
var min = a.getMinutes();
var sec = a.getSeconds();
var time = date + ' ' + month + ' ' + year + ' ' + hour + ':' + min + ':' + sec ;
return time;
}
admin.firestore().collection('users').doc(userId).get()
.then( (doc) => {
const user = doc.data();
const birthDate = user.birthDate;
const birthDateString = timeConverter(birthDate);
console.log(`birthDateString =${birthDateString}`);
// "birthDateString = NaN undefined NaN NaN:NaN:NaN"
});
解决方案
首先,您可以使用toDate()
将 Firebase 时间戳转换为Date
对象,然后使用Date
's object 方法toDateString()
将其转换为字符串。
const birthDate = user.birthDate.toDate();
const birthDateString = birthDate.toDateString();
您还可以查看Moment.js,它在处理和显示日期时很有帮助。
推荐阅读
- php - 从数组创建表
- netflix-zuul - 如何在一个网关应用中创建多个 Zuul 过滤器
- ios - 如何在 Main.storyboard 中引用的不同 Storyboard 中为导航控制器设置标签栏图标和标题?
- javapackager - 是否有项目支持使用 javapackager 进行跨平台构建
- ios - 将文件保存到 Google Drive 中的共享文件夹
- html - 验证简单的可选输入
- c# - 为什么执行 WCF(.svc) 服务后找不到端点
- javascript - JavaScript 改变样式的 CSS 过渡
- c# - Xamarin - 以下方法或属性之间的调用不明确
- kubernetes - 从 pod 连接到其他 pod