【问题标题】:Sailsjs/waterline specify number of decimal places in modelSailsjs/waterline 指定模型中的小数位数
【发布时间】:2014-10-28 19:57:35
【问题描述】:

如何告诉我的sails 模型我想要type: 'float' 属性的特定数字小数位?比如decimalPlaces: 4 之类的?

问题是当我向这个条目发布一个值时,磁盘上的值被截断到.00(数百个)位置。说我想要:3243.2352362 按原样存储。目前已转换为3243.24

如果重要的话,我正在使用sails-mysql 适配器。

【问题讨论】:

  • 这方面有什么成功吗?

标签: sails.js waterline


【解决方案1】:
  types: {
    decimal2: function(number){
      return ((number *100)%1 === 0);
    }
  },
  attributes: {
    myNumber: {
      type: 'float',
      decimal2: true
    }
  }

不过,这是 2 位小数。我找不到动态更改 N 的方法,因为无法将参数传递给自定义验证。 此问题的解决方法是检查 beforeValidation() 函数中的自定义小数位数。

【讨论】:

  • 对不起,我不是说动态的。我只是说随意。这并不能真正解决我正在处理的问题,即模型将小数位去掉0.00
  • 您必须将该数字乘以一个更大的数字。 2 位小数为 100,6 位为 10^6 即 1000000。验证规则只是将数字相乘以减少小数位数,然后执行 %1 检查是否有余数。
  • 抱歉,请参阅编辑。我不是在寻找验证规则,而是防止截断我发布的值。
  • 你知道,现在我回过头来看你在这里做了什么。我以前没有得到它。这是一个很好的解决方法。但我仍然希望有一种方法可以简单地用小数存储数据,这样我就不必每次提取数据时都添加这个逻辑。
【解决方案2】:

我不建议(而且我认为 float 不可能)在模型中添加约束。

我建议你设置:

迁移:“安全”

在您的模型中并在表格中设置适当的数据类型/小数位数。

【讨论】:

  • 我考虑过这个。猜猜这是另一个要打开的问题。抱歉,我今天用帆撞了很多墙。
猜你喜欢
  • 1970-01-01
  • 2016-01-16
  • 2014-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多