Firestore -将所有Firestore.Timestamp对象转换为Javascript日期的聪明方法

y4ekin9u  于 2023-02-02  发布在  Java
关注(0)|答案(1)|浏览(93)

我有一个对象的集合,我想检索。对象有一些日期键:值对在他们,我想返回所有这些作为一个适当的Javascript日期。我不想一一声明他们,因为有一些日期只存在于一些对象,有些我可能不知道,一般来说,这是令人沮丧的一一声明一切。
这是我的代码,不工作,我怎么能让它工作?

async function getChargesFromDatabase() {
  const chargesCol = fsExpenses.collection('charges');
  const chargesDocs = (await chargesCol.limit(50).orderBy('startTs', 'desc').get()).docs.map((doc) => {
    const returnDoc: any = {};
    for (const [key, value] of Object.entries(Object.entries(doc.data()))) {
      returnDoc[key] = value?.toDate() ?? value;
    }
    return returnDoc;
  });
  return chargesDocs;
}
pn9klfpd

pn9klfpd1#

你必须检查所有的键,就像你现在所做的那样,检查一个字段是否是Firestore时间戳的示例。

const convertTimestamps = (obj: any) => {
  if (obj instanceof firebase.firestore.Timestamp) {
    return obj.toDate();
  } else if (obj instanceof Object) {
    // Check for arrays if needed
    Object.keys(obj).forEach((key) => {
      obj[key] = convertTimestamps(obj[key]);
    });
  }
  return obj;
};
async function getChargesFromDatabase() {
  const chargesCol = fsExpenses.collection('charges');
  const chargesSnap = await chargesCol.limit(50).orderBy('startTs', 'desc').get()
  const chargesDocs = chargesSnap.docs.map((doc) => convertTimestamps(doc.data()))
}

相关问题