如何在Firestore.FieldValue.Timestamp上使用toDate()?

时间:2019-08-31 16:55:12

标签: javascript google-cloud-firestore timestamp

我正在尝试从具有字段值时间戳数据的Firestore数据库填充表:

https://i.imgur.com/zxJnrOr.png

具有以下用于网络的代码:

firebase.initializeApp(firebaseConfig);

const attendanceCollection = firebase.firestore().collection("attendance");

var lastIndex = 0;

function getData() {
    var htmls = [];
    attendanceCollection.get().then(querySnapshot => {    
        querySnapshot.forEach(doc => {

            console.log(`${doc.id}`);
            console.log(`${(doc.data().GENERALASSEMBLY)}`)

            htmls.unshift('<tr>\
                <td>'+ `${doc.id}` +'</td>\
                <td class="message" style=" text-overflow: ellipsis">'+ `${(doc.data().GENERALASSEMBLY)}` +'</td>\
                <td style="overflow: hidden; text-overflow: ellipsis">'+ `${doc.id}` +'</td>\
            </tr>');
        });
        $('#tbody').html(htmls);
    $("#submitUser").removeClass('desabled');
    });

};

返回以下内容: https://i.imgur.com/gOU0kYq.png

我找到了一些参考资料,但实际上并没有帮助我解决我要做的事情:

How to get a JavaScript Date object from the new `firebase.firestore.FieldValue.serverTimestamp()`

How do I convert a Firestore date/Timestamp to a JS Date()?

如何在上面的代码中实现toDate()?能否给我一些使用toDate()将Firestore时间戳转换为日期/字符串的示例?

2 个答案:

答案 0 :(得分:1)

您需要在toDate()字段上调用GENERALASSEMBLY,以获取其值作为日期。而且由于在第一个事件触发时该字段最初将是null,所以您还需要检测GENERALASSEMBLY是否首先是null

${(doc.data().GENERALASSEMBLY ? doc.data().GENERALASSEMBLY.toDate() : "-unknown-")}

答案 1 :(得分:0)

如果您使用库date-fns,请记住现在是unix时间,因此 fromUnixTime(GENERALASSEMBLY.seconds)

然后您可以只使用format并解析fromUnixTime

format(fromUnixTime(GENERALASSEMBLY.seconds))