Como devo armazenar um preço em mangusto?

Eu estou usando esquemas de mongoose para node.js junto com express-validator (que tem santiziations e validadores de validador de nó).

O que é uma boa maneira de armazenar o preço de um item?

Eu tenho atualmente

var ItemSchema = new Schema({
    name            : { type: String, required: true, trim: true }
    , price             : Number
});

O preço é opcional, então eu tenho:

  if ( req.body.price ) {
    req.sanitize('price').toFloat();
    req.assert('price', 'Enter a price (number only)').isFloat();
  }

express-validator me dá isNumeric (permite 0 padding), isDecimal e isInt ... Eu prefiro apenas converter em decimal e tira todos os caracteres, por isso estou sempre inserindo 42,00 em db.

Eu quero permitir que eles insiram $ 42,00, $ 42, 42, 42,00 e apenas armazenar 42,00. Como posso fazer isso? e ainda validar que estou vendo algo parecido com um número, por exemplo, se eles digitarem 'abc' eu quero lançar um erro de volta ao formulário usando req.assert.

Além disso, suponho que a moeda acabará se tornando um problema ...

Update, eu encontrei este post que diz para armazenar preço como número inteiro em centavos, então 4200https://dba.stackexchange.com/questions/15729/storing-prices-in-sqlite-what-data-type-to-use

Eu só preciso de uma maneira de converter 4200 para US $ 42,00 quando eu chamo item.price e também higienizar e converter a entrada em 4200.

questionAnswers(5)

yourAnswerToTheQuestion