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

Javascript 为什么Firestore将金额存储为字符串而不是数字?,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,我创建了一个用户可以填写的表单。其中一个字段用于我指定类型为“数字”的金额 然后表单作为文档存储在firestore中,firestore将金额保存为字符串而不是数字。我尝试过不同的方法,但没有成功 谁能解释一下我的代码有什么问题吗 谢谢 HTML <form id="create-form"> <div class="input-field"> <input type="number" step="0.01" id

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

然后表单作为文档存储在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>
.... 

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

如果希望它成为数值,则需要将该字符串解析为数字:

parseInt(createForm.amount.Value)
或者如果允许用户输入非整数

parseFloat(createForm.amount.Value)
如果在将值传递给Firestore之前执行此操作,则Firestore将存储数值而不是字符串:

amount: parseFloat(createForm.amount.Value),


我必须查找:
type=“number”
主要决定移动用户将看到哪些键盘输入值,并且可能会影响字段值的客户端验证。但是,如果您在JavaScript中访问该值,它仍然是一个字符串,因此需要进行我上面提到的转换。

您是否尝试了
amount:parseInt(createForm.amount.value,10)
?这解决了一半问题,因为现在数据类型在firestore中存储为数字(这很好!)但是数量是多少?你在调试器中单步执行代码?
createForm.amount.value
的确切值是多少?
parseFloat(createForm.amount.Value)
的输出是什么?
amount: parseFloat(createForm.amount.Value),