将数据推送到数组中,但在将时间戳转换为日期之后

Posted

技术标签:

【中文标题】将数据推送到数组中,但在将时间戳转换为日期之后【英文标题】:Push data in array but after converting timestamp to date 【发布时间】:2020-07-10 11:26:03 【问题描述】:

从 Firestore 获取数据并将其推送到数组中。这工作正常,但在此过程中,我正在更改时间戳格式,我希望在我的数组中而不是原始数组中的 timestamp 值。如何从原始值替换此值并推送?

到目前为止我的代码:

home.ts

firebase.firestore().collection("dailyreport").where("timestamp", ">=", start)
    .onSnapshot(querySnapshot => 
        var cities = [];
        querySnapshot.forEach( doc=> 

  const timeinmillsecs = doc.data().timestamp.seconds * 1000; 
  let a1 = new Date(timeinmillsecs); 
  let show_year_month_date =  a1.getFullYear()+'/'+(a1.getMonth()+1) +'/'+a1.getDate(); // 3.convert to imple date

  console.log(show_year_month_date); // ***NEED THIS VALUE IN dailyreports ARRAY 

         this.dailyreports.push(doc.data());
         console.log("Timestamp greather than 29march -- ", (doc.data()));
        );
    );

console.log(doc.data())的截图

编辑 1

在推送之前,我已经分配了这样的值-

doc.data().timestamp = show_year_month_date;
this.dailyreports.push(doc.data());

但它也不起作用。

编辑 2

dailyreportsdoc 的截图:

【问题讨论】:

您要更改this.dailyreports 数组还是data.doc() this.dailyreports 应该有一个新字段或当前时间戳字段应该更改为所需的格式 【参考方案1】:

不要尝试更新doc.data(),而是将值复制到一个新变量,比如data。更新data中的时间戳,然后将数据推送到this.dailyreports。然后控制台记录data 以查看推送到this.dailyreports 的具有更新时间戳的对象。

firebase.firestore().collection("dailyreport").where("timestamp", ">=", start)
  .onSnapshot(querySnapshot => 
    var cities = [];
    querySnapshot.forEach(doc => 
      const data = doc.data();

      const timeinmillsecs = data.timestamp.seconds * 1000;
      let a1 = new Date(timeinmillsecs);
      let show_year_month_date = a1.getFullYear() + '/' + (a1.getMonth() + 1) + '/' + a1.getDate(); // 3.convert to imple date

      data.timestamp = show_year_month_date;
      console.log(show_year_month_date); // ***NEED THIS VALUE IN dailyreports ARRAY 
      


      this.dailyreports.push(data);
      console.log("Timestamp greather than 29march -- ", data);
    );
  );

【讨论】:

doc.data().timestamp = show_year_month_date; ,即使我 console.log 这个,它也不会改变,我可以在这个数组中添加一个新字段并在home.html 一侧检索它吗? 你能 console.log doc 分享一下节目内容吗? 我已经这样做了,请参阅有问题的Edit 2,我已经更新了问题并添加了屏幕截图 data.timestamp = show_year_month_date; 错误 - 找不到名称数据 我们不能将show_year_month_date; 的值添加到一个新变量中吗?比如说timestamp2 并将其推送到数组中?

以上是关于将数据推送到数组中,但在将时间戳转换为日期之后的主要内容,如果未能解决你的问题,请参考以下文章

将所有数据推送到数组后设置状态

将json数据推送到angular js中的现有数组

维护传入流数据的时间戳序列

使用 sql 将字符串纪元代码从 unix 时间戳转换为日期

循环遍历两个对象数组以将匹配值推送到新数组在 React 中不起作用,但在 JS Fiddle 中起作用

将对象 ID 推送到嵌套数组 MongoDB/Mongoose