使用 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
我在 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