Десятичный / плавающий в мангусте для node.js

Я запускаю свое первое тестовое приложение на node.js / mongoDB / mongoose, это очень простое приложение, которое предназначено для записи записей в БД и их получения.

Я создаю модель вроде:

var Car = new Schema({ brand : String, speed : Number, date : { type: Date, default: Date.now } }); 

Это работает отлично, за исключением того, что я хотел бы иметь возможность предоставлять значение float для скорости вместо целочисленного. Я попробовал Decimal и Float, но никто из них не работает. Я тоже не нашел в документации.

Любая идея ?

Я вообще не знаком с mongoose и node.js, но я искал бит и обнаружил, что для хранения значений float вы должны использовать тип Number . Вы можете сохранить любое значение поплавка в поле speed . Статья .

Надеюсь, эта помощь.

Хотя mongoDB полностью поддерживает тип float, mongoose поддерживает только тип Number, который является целым числом. Если вы попытаетесь сохранить число mongoDB с плавающей точкой, используя тип Mongooses Number, он будет преобразован в строку.

Чтобы разобраться в этом, вам нужно будет загрузить плагин для mongoose, который расширит его типы значений. Есть некоторые плагины, которые лучше всего работают с валютами или датами, но в вашем случае я бы использовал https://www.npmjs.com/package/mongoose-double .

Ваша модель после изменений будет выглядеть примерно так:

 var mongoose = require('mongoose') require('mongoose-double')(mongoose); var SchemaTypes = mongoose.Schema.Types; var Car = new Schema({ brand: { type: String }, speed: { type: SchemaTypes.Double }, date: { type: Date, default: Date.now } }); 

Надеюсь, поможет.