我正在为 node.js 使用猫鼬模式以及 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...我宁愿只转换为十进制并删除所有字符,所以我总是将 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 时,我只需要一种将 4200 转换为 42.00 美元的方法。