mongoose和浮游物值

我的经纬度数字正在转换为string。 我的部分整数仍然是Number的正确数据types。 如何设置模型,以便我可以将我的lat&lng返回为Float而不是String?

我在我的数据库中存储latLng数据。 现在我的数据types被设置为lat&lng的Number。 当我检查我的分贝我看到这个:

{ "_id" : ObjectId("563bd98a105249f325bb8a7e"), "lat" : 41.8126189999999980, "lng" : -87.8187850000000054, "created" : ISODate("2015-11-05T22:34:50.511Z"), "__v" : 0, "section" : 0, } 

但是,当我使用快递将我的数据恢复出来时,我可以得到:

 { "_id": "563bd98a105249f325bb8a7e", "lat" : "41.8126189999999980", "lng" : "-87.8187850000000054", "__v": 0, "section" : 0, "created" : "2015-11-05T22:34:50.511Z", } 

我的模特:

 var WaypointSchema = new Schema({ lat: { type: Number }, lng: { type: Number }, section: { type: Number } created: { type: Date, default: Date.now } }); mongoose.model('Waypoint', WaypointSchema); 

Express控制器:

 exports.list = function(req, res) { Waypoint.find().sort('-created').populate('user', 'displayName').exec(function(err, waypoints) { if (err) { return res.status(400).send({ message: errorHandler.getErrorMessage(err) }); } else { res.jsonp(waypoints); } }); }; 

当mongoDB完全支持floattypes时,mongoose只支持整型的Numbertypes。 如果您尝试使用mongoosestypes的Number保存到mongoDB浮点数,它将被转换为string。

为了解决这个问题,你需要为mongoose加载一些插件来扩展它的值types。 有一些最适合货币或date的插件,但在你的情况下,我会使用https://www.npmjs.com/package/mongoose-double

更改后的模型将如下所示:

 var mongoose = require('mongoose') require('mongoose-double')(mongoose); var SchemaTypes = mongoose.Schema.Types; var WaypointSchema = new Schema({ lat: { type: SchemaTypes.Double }, lng: { type: SchemaTypes.Double }, section: { type: Number } created: { type: Date, default: Date.now } }); mongoose.model('Waypoint', WaypointSchema); 

希望能帮助到你。