node.js の mongoose スキーマを、express-validator (node-validator santiziations とバリデーターを備えています) と共に使用しています。
商品の価格を保存する良い方法は何ですか?
私は現在持っています
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 パディングを許可)、isDecimal、および isInt を提供します...10 進数に変換してすべての文字を削除したいので、常に 42.00 を db に挿入しています。
$42.00、$42、42、42.00 を入力して、42.00 だけを保存できるようにします。どうすればこれを達成できますか? たとえば、「abc」と入力した場合、req.assert を使用してフォームにエラーを返したいとします。
あと、通貨はいずれ問題になると思いますが…
更新、価格をセント単位の整数として保存するように言うこの投稿を見つけたので、4200 https://dba.stackexchange.com/questions/15729/storing-prices-in-sqlite-what-data-type-to-use
item.price を呼び出すときに 4200 を $42.00 に変換し、入力をサニタイズして 4200 に変換する方法が必要です。