Mongoose-Express架构中Float类型未定义及替代类型咨询
解决Mongoose Schema中Float类型报错的替代方案
Mongoose 没有内置的 Float 或 float 类型,这是你报错的核心原因。针对存储如10000000.25这类浮点数值,推荐以下几种替代方案:
使用
Number类型(最常用)
Mongoose的Number类型对应MongoDB底层的Double类型,完全支持存储浮点数值,是最直接的解决方案。示例代码:const mongoose = require('mongoose'); const yourSchema = new mongoose.Schema({ amount: { type: Number, required: true } });存入10000000.25后,在MongoDB Compass中会显示为
Double类型,读取时可直接获取精确的浮点值。使用
Decimal128类型(高精度场景)
如果涉及金融等对精度要求极高的业务场景,推荐使用Decimal128类型,它能避免普通浮点数的精度丢失问题。示例代码:const mongoose = require('mongoose'); const yourSchema = new mongoose.Schema({ amount: { type: mongoose.Schema.Types.Decimal128, required: true } });存入时可传入数字或字符串,读取时需调用
toString()方法转换为可读格式:const doc = await YourModel.findOne(); const amount = doc.amount.toString(); // 得到"10000000.25"
内容的提问来源于stack exchange,提问作者Aarti Verma
相关产品推荐
相关产品推荐

