Десятичное число / число с плавающей запятой в мангусте для node.js - PullRequest
32 голосов
/ 09 апреля 2011

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

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

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

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

Есть идеи?

Ответы [ 3 ]

46 голосов
/ 10 апреля 2011

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

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

0 голосов
/ 28 марта 2019

Да, вы можете использовать тип "Decimal128".

https://mongoosejs.com/docs/api.html#mongoose_Mongoose-Decimal128

0 голосов
/ 18 февраля 2016

Хотя mongoDB полностью поддерживает тип с плавающей точкой, 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 
    }
});

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...