Decimal / Float en mangosta para nodo.js


Comienzo mi primera aplicación de prueba en node.js / MongoDB / mongoose, esta es una aplicación muy simple que tiene como objetivo registrar la caja en la base de datos y recuperarlos.

Creo un modelo como:

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

Esto está funcionando bien, excepto que me gustaría poder proporcionar un valor flotante para la velocidad en lugar del entero. Le di una oportunidad a Decimal y Float pero ninguno de ellos está funcionando. Tampoco lo encontré en la documentación.

Alguna idea ?

Author: Luc, 2011-04-09

2 answers

No estoy familiarizado con la mangosta y el nodo.js en absoluto, pero he buscado un poco y encontré que para almacenar valores flotantes debe usar el tipo Number. Puede almacenar cualquier valor flotante en el campo speed. Artículo.

Espero que esto ayude.

 37
Author: Andrew Orsich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-30 12:46:41

Mientras que el MongoDB soporta completamente el tipo float, la mangosta soporta solo el tipo de Número que es entero. Si intenta guardar el número flotante MongoDB usando el tipo de número mongooses, se convertirá en cadena.

Para resolver esto, necesitará cargar algún complemento para mangosta que extenderá sus tipos de valor. Hay algunos complementos que funcionan mejor con monedas o fechas, pero en su caso usaría https://www.npmjs.com/package/mongoose-double .

Su el modelo después de los cambios se vería algo como esto:

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 
    }
});

Espero que ayude.

 -1
Author: shamanSK,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-18 13:00:20