mysql - 插入的二进制 GUID 值作为函数定义返回

标签 mysql node.js sequelize.js

我有一个sequelize模型,它使用mysql函数来创建guid,例如:

guid: {
    type: DataTypes.STRING.BINARY,
    defaultValue: sequelize.fn('UuidToBin', sequelize.fn('uuid')),
    primaryKey: true
},
inProcess: DataTypes.BOOLEAN, 
...

我使用 create 方法成功创建了新记录,包括二进制 guid,

MessagesDBModel.create(messageObj)
        .then((savedMessage) => res.send(200, {
            status: 200,
            message: "OK",
            guid: savedMessage.guid.toString('hex') //outputs [object Object]

但是,无法从savedMessage对象中检索guid的值。当我设置断点时,savedMessage.dataValues.guid = Fn。

如何访问插入的 guid 值而不是创建它的函数?

最佳答案

你可以先考虑build的情况。在下面的代码中

const record = Model.build({}) // assuming Model has guid attribute that you wrote 

此时record.guid应该是什么?由于事务尚未发生,因此不应执行该函数,因此无法确定 guid 值。

对于在事务完成之前和之后具有相同值的标量值来说,这不是问题。然而,在函数的情况下,由于确定值的点就是提交事务的点,因此 sequelize 必须将事务中包含的整个对象的值替换为函数的执行结果。看来这是一项非常辛苦的工作。

目前,这似乎是使用last_inserted_id或类似的东西再次选择的好方法。

关于mysql - 插入的二进制 GUID 值作为函数定义返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49373702/

相关文章:

mysql - 使用 Node JS 和 Sequelize 连接到 MySql

javascript - 如何使用 sequelize 从另一个表中插入所有值

node.js - NodeJS 执行 then() 之后的下一个进程

java - JPA - 插入许多表

php - mysql - 计算两个变量的总条目数

node.js - 如何使用 Sequelize 更新我的购物车数据库中的商品数量(如果它已经存在)或如果不存在则创建它?

node.js - 测试服务器查询/数据库

javascript - 使用 PHP 和 JavaScript 更新 'credits'

mysql - Spring Data JPA 左连接子查询

javascript - 您如何使用 Express 访问 Axios 响应?