首页 > 解决方案 > 从 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" 
     });

标签: node.jsfirebasegoogle-cloud-firestoregoogle-cloud-functions

解决方案


首先,您可以使用toDate()将 Firebase 时间戳转换为Date对象,然后使用Date's object 方法toDateString()将其转换为字符串。

const birthDate = user.birthDate.toDate();
const birthDateString = birthDate.toDateString();

您还可以查看Moment.js,它在处理和显示日期时很有帮助。


推荐阅读