我在mssql上有这个NUMERIC(20)字段,我正在尝试将其作为数据类型字符串读取以获取完整数字,因为javascript上的int限制
code: {
type: DataTypes.STRING
}
但是返回的值是一个截断的INT
[ {code: 4216113112911594000 } ]
无论选择哪种数据类型,它都将被截断为整数
原始值为4216113112911594192
。这是一个Java UUID
如何将此值转换为使用model.findAll()
这是一个已经为其他应用程序创建的表,我正尝试使用sequelize读取它
答案 0 :(得分:0)
您在这里:
code: {
type: Sequelize.INTEGER , // <------ keep is as DB's datatype
get() { // <------ Use getter method to modify the output of query
return this.getDataValue('code').toString();
}
}
我认为这可能对您有帮助
model.findOne({
attributes: [[db.sequelize.literal('cast(`code` as varchar)'), 'code_string']] ,
where : { id : YOUR_ID }
}).then(data => {
console.log(data); // <------ Check your output here
})
答案 1 :(得分:0)
我还没有完全理解您要达到的目标。
我的代码也没有经过测试。
想法1:转换为浮点数。
想法2:在发送到javascript之前,将任何字符串字母附加到原始int值。
原始值为4216113112911594192
。
这样字符串就变成了'A'+'4216113112911594192'='A4216113112911594192'
现在您可以玩'A4216113112911594192'
有许多JavaScript库支持大整数。 BigInteger