Подтвердить что ты не робот

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

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

Я создаю такую ​​модель, как:

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

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

Любая идея?

4b9b3361

Ответ 1

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

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

Ответ 3

Пока 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 
    }
});

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