如何使用Collections2在Meteor(JS)中存储浮点值?

时间:2015-02-23 04:41:42

标签: meteor meteor-collection2

我在架构中有一个Number数据类型(simple-schema)但在使用collections2时无法在其中存储浮点数:

Schema.Coordinates = new SimpleSchema({ lng: { type: Number, min: -180.0, max: 180.0 }, lat: { type: Number, min: -90.0, max: 90.0 } });

当我尝试插入除整数之外的任何内容(xxxx.0的任何内容)时,我收到验证错误:

W20150222-20:24:23.523(-8)? (STDERR) Error: Lng must be an integer

2 个答案:

答案 0 :(得分:4)

如前所述,将decimal设置为true将允许浮点数。

我只是想提出另一个建议。由于您正在尝试存储log / lat,因此这将是一个更好的架构:

loc:
   type: Object
   index: '2dsphere'
   label: "Location"

"loc.type": 
   type: String
   allowedValues: [ "Point" ]
   label: "Start location type"

"loc.coordinates":
   type: [Number]
   minCount: 2
   maxCount: 2
   decimal: true

这允许您以GeoJSON格式存储坐标,以便您可以在服务器上使用Mongo的空间运算符(例如$near)。

答案 1 :(得分:2)

您可以将decimal设置为true(docs)。我想这有点像可选,就像其他答案一样。

Schema.Coordinates = new SimpleSchema({
    lng: {
        type: Number,
        min: -180.0,
        max: 180.0,
        decimal:true,
    },
    lat: {
        type: Number,
        min: -90.0,
        max: 90.0,
        decimal: true,
    }
});