LoopBack 4中如何设置MySQL数据库的float类型字段?
解决LoopBack 4中MySQL数据库生成float类型字段的问题
我之前也碰到过这个问题——LoopBack 4 默认会把 type: 'number' 映射为 MySQL 的 int(11),仅靠 jsonSchema.format: 'float' 是没用的,因为这个只是JSON Schema层面的校验规则,不会直接影响数据库字段的实际类型生成。
要让MySQL生成浮点类型的字段,你需要在 @property 装饰器里添加 MySQL专属的配置项,明确指定数据库字段类型。具体做法如下:
修改模型字段配置
把你的字段定义改成下面这样,新增 mysql 配置块:
@property({ type: 'number', jsonSchema: { format: 'float' }, // 保留JSON Schema校验规则 mysql: { dataType: 'float', // 指定MySQL的字段类型为float nullable: false, // 可选,根据业务需求设置是否允许为空 }, }) field: number;
可选:更精确的浮点类型
如果需要更高精度的浮点存储(比如货币类字段),可以用 decimal 类型并指定精度和小数位数:
@property({ type: 'number', jsonSchema: { format: 'float' }, mysql: { dataType: 'decimal(10,2)', // 总位数10位,其中小数位2位 nullable: false, }, }) amount: number;
重新执行迁移
修改完模型后,运行LoopBack的迁移命令更新数据库结构:
lb4 migrate
这样数据库里对应的字段就会变成你指定的浮点类型,而不是默认的 int(11) 了。
内容的提问来源于stack exchange,提问作者U-Dev
相关产品推荐
相关产品推荐

