【问题标题】:Handling a time-stamp in Firebase在 Firebase 中处理时间戳
【发布时间】:2021-01-17 18:41:21
【问题描述】:

在 firebase 实时数据库中,一些看似基本的东西不起作用。

这里是JS代码:

  let myDBRef = firebase.database().ref('MyCollection');
  newItem = myDBRef.push(),
  startTime = firebase.database.ServerValue.TIMESTAMP,
  endTime = startTime + 24*3600*1000
  newItem.set({
    someField:'myFieldValue',
    startTime:startTime,
    endTime:endTime
  });

我希望在 DB 中出现如下结果:

  -MXb9s2-3mX3XZL_azRv
      endTime: 1601691254295
      someField: "myFieldValue"
      startTime: 1601604854295

但我得到了这个:

  -MXb9s2-3mX3XZL_azRv
      endTime: "[object Object]86400000"
      someField: "myFieldValue"
      startTime: 1601604854295

我做错了什么,我需要如何更改 JS 代码以获得我期望的结果?

【问题讨论】:

    标签: javascript firebase firebase-realtime-database timestamp


    【解决方案1】:

    firebase.database.ServerValue.TIMESTAMP 不是当前的服务器端时间戳,而是一个标记值,在写入数据库时​​会转换为实际的服务器端时间戳。

    这意味着您不能像现在这样在一个步骤中存储计算值。你有两个选择:

    1. 存储duration 而不是endTime。所以:

      let myDBRef = firebase.database().ref('MyCollection');
      newItem = myDBRef.push(),
      startTime = firebase.database.ServerValue.TIMESTAMP,
      duration = 24*3600*1000
      newItem.set({
        someField:'myFieldValue',
        startTime:startTime,
        duration:duration
      });
      
    2. 首先存储startTime,然后在客户端或云函数中计算endTime,然后更新数据库。这会是这样的:

      let myDBRef = firebase.database().ref('MyCollection');
      newItem = myDBRef.push(),
      startTime = firebase.database.ServerValue.TIMESTAMP,
      duration = 24*3600*1000
      newItem.set({
        someField:'myFieldValue',
        startTime:startTime,
      }).then(() => {
        newItem.child("startTime").once("value").then((snapshot) => {
          newItem.update({ endTime: snapshot.val() + duration });
        })
      })
      

    【讨论】:

    • 好的。这是有道理的,我会尝试的。但我想你的意思是:“duration = 24*3600*1000”而不是“duration + 24*3600*1000”。对吗?
    • 我编辑了帖子以修复它并接受了答案。
    猜你喜欢
    • 2020-05-11
    • 2010-12-30
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    相关资源
    最近更新 更多