如何查询Firestore并将读取值转为JavaScript Number类型?
解决Firestore读取Number类型值到JS变量的问题
你的问题出在错误地把整个文档对象当成单个字段值处理,doc.data()返回的是包含所有字段的对象,不是你要的那个Number值,所以才会出现NaN或[Object object]的情况。
错误原因解析
- 第一个代码里
Number(doc.data()):把对象转成Number,JS会直接返回NaN,因为对象无法直接转换为有效数字。 - 第二个代码里强制类型转换:只是给对象套了Number类型的壳,但本质还是对象,打印时自然显示[Object object]。
正确代码写法
Firestore会自动把存储的Number类型映射为JS的Number类型,你只需要提取文档里对应的字段值即可:
const doc = await db.collection('lastBlock').doc('lastBlockNumber').get(); if (doc.exists) { // 替换成你数据库里实际的字段名(比如截图里的字段键名) lastBlockNumber = doc.data().lastBlockNumber; // 更安全的写法:用get方法,字段不存在时返回undefined // lastBlockNumber = doc.get('lastBlockNumber'); }
注意事项
要确保代码里的字段名和Firestore文档里的字段名完全一致(大小写敏感),比如如果你的文档里字段叫value,就写成doc.data().value。
内容的提问来源于stack exchange,提问作者Sami Awwad
相关产品推荐
相关产品推荐

