Ответ 1
Я вообще не знаком с mongoose и node.js, но я немного искал и обнаружил, что для хранения значений float вы должны использовать тип Number
. Вы можете сохранить любое значение float в поле speed
. Статья.
Надеюсь на эту помощь.
Я запускаю свое первое тестовое приложение на 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
. Вы можете сохранить любое значение float в поле speed
. Статья.
Надеюсь на эту помощь.
Да, вы можете использовать тип "Decimal128".
https://mongoosejs.com/docs/api.html#mongoose_Mongoose-Decimal128
Пока 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
}
});
Надеюсь, что это поможет.