Javascript 为什么Firestore将金额存储为字符串而不是数字?
我创建了一个用户可以填写的表单。其中一个字段用于我指定类型为“数字”的金额 然后表单作为文档存储在firestore中,firestore将金额保存为字符串而不是数字。我尝试过不同的方法,但没有成功 谁能解释一下我的代码有什么问题吗 谢谢 HTMLJavascript 为什么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
<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),