使用sequelize模型将NUMERIC转换为VARCHAR

时间:2018-08-01 22:47:00

标签: sql-server sequelize.js numeric

我在mssql上有这个NUMERIC(20)字段,我正在尝试将其作为数据类型字符串读取以获取完整数字,因为javascript上的int限制

code: {
 type: DataTypes.STRING
}

但是返回的值是一个截断的INT

[ {code: 4216113112911594000 } ] 

无论选择哪种数据类型,它都将被截断为整数

原始值为4216113112911594192。这是一个Java UUID

如何将此值转换为使用model.findAll()

这是一个已经为其他应用程序创建的表,我正尝试使用sequelize读取它

2 个答案:

答案 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