【问题标题】:Convert NUMERIC to VARCHAR using sequelize model使用 sequelize 模型将 NUMERIC 转换为 VARCHAR
【发布时间】:2018-08-01 22:47:00
【问题描述】:

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

code: {
 type: DataTypes.STRING
}

但是返回的值是截断的 INT

[ {code: 4216113112911594000 } ] 

无论选择哪种数据类型,它都会返回截断的 int

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

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

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

【问题讨论】:

    标签: sql-server sequelize.js numeric


    【解决方案1】:

    给你:

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

    【讨论】:

    • 感谢您的回答,它现在返回一个字符串,但值仍然被截断[ { code: '4216113112911594000'}]
    【解决方案2】:

    我还没有完全理解你想要达到的目标。

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

    思路一:转成浮点数。

    想法 2:在发送到 javascript 之前,将任何字符串字母附加到原始 int 值。

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

    现在你可以玩'A4216113112911594192'

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

    【讨论】:

    • 问题是我总是在我的模型的 get 函数中得到一个截断的 int
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多