gpt4 book ai didi

javascript - 为什么 Firestore 将金额存储为字符串而不是数字?

转载 作者:行者123 更新时间:2023-11-30 19:14:37 25 4
gpt4 key购买 nike

我创建了一个用户可以填写的表单。其中一个字段用于金额,我将类型指定为“数字”。

然后,表单将作为文档存储在 firestore 中,firestore 会将金额保存为字符串而不是数字。我尝试了不同的方法都没有成功。

任何人都可以解释我的代码有什么问题吗?

谢谢

HTML

      <form id="create-form">

<div class="input-field">
<input type="number" step="0.01" id="amount" required>
<label for="amount">Amount</label>
</div>
....

JS

....
db.collection('users').doc(user.uid).collection('items').doc('manual').collection('transactions').add({
amount: createForm.amount.Value,
name: createForm.name.value,
category: createForm.category.value,
date: createForm.date.value,
userUID: user.uid
})
....

最佳答案

当您在 HTML 文本输入字段中输入数据时,它的值在 JavaScript 代码中变成一个字符串(因为文本字段允许输入所有类型的值)。

如果你想让它变成一个数值,你需要把那个字符串解析成一个数字:

parseInt(createForm.amount.Value)

或者如果允许用户输入非整数

parseFloat(createForm.amount.Value)

如果您在将值传递给 Firestore 之前这样做,它将存储数值而不是字符串:

amount: parseFloat(createForm.amount.Value),

我不得不查一下:type="number" 主要决定了移动用户在输入值时将看到的键盘,并且可能会影响字段值的客户端验证。但是如果你在 JavaScript 中访问这个值,它仍然是一个字符串,因此需要我上面提到的转换。

关于javascript - 为什么 Firestore 将金额存储为字符串而不是数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58147592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com