Из документации Firestore о сохранении данных поддерживаемых типов я отмечаю красным цветом:
var docData = {
//...
dateExample: new Date("December 10, 1815"),
//...
}
};
db.collection("data").doc("one").set(docData).then(function() {
console.log("Document successfully written!");
});
Это то, что я использую в своих облачных функциях для сохранения различных дат в Firestore.Это прекрасно работает!
Моя проблема возникает, когда мне нужно получить эти даты и опубликовать их как String в стороннем 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"
});