Как я могу хранить значения с плавающей запятой в Meteor (JS) с помощью Collections2?

У меня есть числовой тип данных в схеме (простая схема), но я не могу хранить в нем числа с плавающей запятой при использовании collection2:

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


person Jason Leach    schedule 23.02.2015    source источник


Ответы (2)


Как уже было сказано, установка decimal в true позволит использовать числа с плавающей запятой.

Я просто хотел сделать еще одно предложение. Поскольку вы пытаетесь сохранить журнал/лат, это будет лучшая схема:

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) на сервере.

person tarmes    schedule 23.02.2015

Вы можете установить для decimal значение true (документы). Я думаю, это немного похоже на необязательный, как и другой ответ.

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,
    }
});
person Tarang    schedule 23.02.2015