2015-11-06 105 views
4

我的緯度& lng數字正在轉換爲字符串。我的部分整數仍然是Number的正確數據類型。如何設置模型,以便我可以將我的經緯度作爲Float而不是String?貓鼬和浮點值

我正在LatLng數據存儲在我的分貝。現在我的數據類型設置爲數字lat & lng。當我檢查出我的分貝我看到這一點:

{ 
    "_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); 

快遞控制器:

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); 
     } 
    }); 
}; 
+1

你能編輯你的問題來顯示創建該輸出的代碼嗎? – JohnnyHK

回答

5

當mongoDB完全支持float類型,貓鼬只支持整數型的Number。如果您嘗試使用貓鼬類型Number保存到mongoDB浮點數,它將被轉換爲字符串。

要對此進行排序,您需要爲貓鼬加載一些插件來擴展它的值類型。有一些插件最適合貨幣或日期,但在你的情況下,我會使用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); 

希望它能幫助。