Web Firestore-将Double值保存到Firebase

时间:2019-07-04 09:47:28

标签: javascript firebase google-cloud-firestore double

我目前正在尝试在Firebase(云Firestore)上保存值。

我的问题很简单:我想保存Double值,但是当一个数字像113而不是145.3时,该值会自动保存在Long中。

这是一个问题,因为我的Android应用程序因此而崩溃,并且同时处理Double和Long值是一团糟。

我尝试过:

# replacing GST to UTC in original string
s_dt = 'Mon Jul 01 17:17:37 GST'.replace("GST", "UTC")

# getting the hours from the string
s_dt_obj = int(s_dt.split(":")[0][-2:])

# substracting 4 from the hours (in order to create UTC equivalent of GST time)
s_dt_obj = str((s_dt_obj - 4) % 24)

# putting everything back to a string
s_dt_obj = f"{s_dt.split(':')[0][:-2]}{s_dt_obj}:{s_dt.split(':')[1]}:{s_dt.split(':')[2]}"

# creating datetime object out of our newly created string
datetime.datetime.strptime(s_dt_obj, '%a %b %d %H:%M:%S %Z')
# datetime.datetime(1900, 7, 1, 13, 17, 37)
  

它不起作用,如果我执行console.log(value),我得到15(不是Double I   猜)。

我也尝试过:

parseFloat(15)
  

它不起作用,值保存在String中。

感谢您的帮助,在Web上处理此问题要比在iOS或Android上复杂得多...

1 个答案:

答案 0 :(得分:0)

根据有关data types in Cloud Firestore的官方文档,有两种数字数据类型:

  

浮点数:64位双精度,IEEE 754。

     

整数:64位,已签名

以及您问题的解决方案:

  

我的问题很简单:我想保存Double值,但是当一个数字像113而不是145.3时,该值会自动保存在Long中。

如果您想将113保存为两倍,则将其另存为113.3,而不是另存为113,因为Firestore会看到113Integer类型的简单数字,它将相应地保存。始终根据所需的数据类型保存数据。

编辑:

添加113113.0都无关紧要,该值在数据库中另存为113。如果要以113.0的形式获取,则必须以double的形式获取。在Android中,您可以使用以下代码行:

double doubleValue = document.getDouble("myDoubleProperty");

即使myDoubleProperty拥有113的整数值,也可以将其保存为双精度型。双精度型总是可以容纳一个整数,而没有特定的强制转换则不能容纳双精度型。