Я использую схемы мангуста для node.js вместе с express-validator (который имеет node -атификаторы и валидаторы).
Какой хороший способ сохранить стоимость товара?
В настоящее время у меня
var ItemSchema = new Schema({
name : { type: String, required: true, trim: true }
, price : Number
});
Цена не является обязательной, поэтому я:
if ( req.body.price ) {
req.sanitize('price').toFloat();
req.assert('price', 'Enter a price (number only)').isFloat();
}
express-validator дает мне isNumeric (допускает 0 padding), isDecimal и isInt... Я бы предпочел просто преобразовать в десятичную строку и удалить все символы, поэтому я всегда вставляю 42.00 в db.
Я хочу разрешить им вводить $42.00, $42, 42, 42.00 и просто хранить 42.00. Как я могу это сделать? и все еще проверяем, что я вижу нечто похожее на число, например, если они вводят "abc". Я хочу вернуть ошибку в форму, используя req.assert.
Кроме того, я полагаю, что валюта в конечном итоге станет проблемой...
Обновление, я нашел это сообщение, которое говорит, чтобы хранить цену как целое в центах, поэтому 4200 https://dba.stackexchange.com/info/15729/storing-prices-in-sqlite-what-data-type-to-use
Мне просто нужен способ конвертировать 4200 в $42.00, когда я вызываю item.price, а также дезинфицирую и конвертирую вход в 4200.