使用 sequelize 模型将 NUMERIC 转换为 VARCHAR

Convert NUMERIC to VARCHAR using sequelize model

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

上的 int 限制
code: {
 type: DataTypes.STRING
}

但是 returned 值是截断的 INT

[ {code: 4216113112911594000 } ] 

无论选择哪种数据类型都会return as truncated int

原值为4216113112911594192。这是一个 java UUID

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

这是已为另一个应用程序创建的 table,我正在尝试使用 sequelize

读取它

给你:

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
})

我还没有完全理解你想要实现的目标。

我的代码也没有经过测试。

思路一:转换成浮点数。

想法 2:在发送到 javascript.

之前,将任何字符串字母附加到原始 int 值

原值为4216113112911594192。 所以字符串变成 'A'+'4216113112911594192'='A4216113112911594192'

现在你可以玩 'A4216113112911594192'

有很多 javascript 库支持大整数。 BigInteger