jak mam przechowywać cenę w mangusty?
Używam schematów mangose dla node.js wraz z express-validator (który ma santiziacje i walidatory węzła-walidatora).
Jaki jest dobry sposób na przechowywanie ceny przedmiotu?
Obecnie mam
var ItemSchema = new Schema({
name : { type: String, required: true, trim: true }
, price : Number
});
Cena jest opcjonalna, więc mam:
if ( req.body.price ) {
req.sanitize('price').toFloat();
req.assert('price', 'Enter a price (number only)').isFloat();
}
express-validator daje mi isNumeric (pozwala na 0 dopełnienia), isDecimal i isInt ... Wolałbym po prostu przekonwertować na dziesiętny i usunąć wszystkie znaki, więc zawsze wstawiam 42.00 do db.
Chcę zezwolić im na wprowadzenie 42,00 USD, 42, 42, 42, 42.00 i po prostu zapisać 42,00. Jak mogę to osiągnąć? i nadal sprawdzam, czy widzę coś przypominającego numer, na przykład, jeśli wprowadzą „abc”, chcę rzucić błąd z powrotem do formularza, używając req.assert.
Przypuszczam też, że waluta w końcu stanie się problemem ...
Aktualizacja, znalazłem ten post, który mówi, aby zapisać cenę jako liczbę całkowitą w centach, czyli 4200https://dba.stackexchange.com/questions/15729/storing-prices-in-sqlite-what-data-type-to-use
Potrzebuję tylko sposobu, aby przekonwertować 4200 do 42,00 $, gdy zadzwonię do item.price, a także zdezynfekuję i skonwertuję dane wejściowe na 4200.