gpt4 book ai didi

mysql - 从sequelize中的插入中获取自动生成(通过触发器)字段

转载 作者:行者123 更新时间:2023-11-29 09:51:57 25 4
gpt4 key购买 nike

我有一个基本 Controller ,用于跨整个 API 的通用插入/更新操作,仅使用表字典,因此我们可以使用相同的函数将数据插入到许多表中。

问题是有一个表使用通过触发器生成的相关数字,当sequelize返回插入的值时,它包含新的ID,但相关字段返回空,我需要它在界面上显示它。

我想过再次向API查询新字段,或者当它包含这些某些表名称时再次在同一个保存函数上查询它,但是有没有办法告诉sequelize“等待”这个新字段生成值然后返回数据可以吗?就像获取新ID一样

或者也许这需要在数据库上修复?我在该领域没有太多经验,但如果有帮助的话我们正在使用 MySQL。

function Init(models, dictionary) {
this.post = (req, res, next) => {
const { obj } = req.body;
const model = models[dictionary[obj._type]];

//Just stripping fields starting with "_"
const objClear = {};
for (const attr in obj) {
if (attr.charAt(0) !== '_') {
objClear[attr] = obj[attr];
}
}

//Saving
model.create(objClear).then(
(objSaved) => {
const data = {
obj: objSaved.get({ plain: true }),
action: 'inserted',
};

//I guess I could query the new row here again
res.json(data);
},
).catch(next);
};
}
module.exports = {
Init,
};

响应如下所示:

{"obj":{"TOTAL":"0","ID":14,...,"TRANSACTION_NO":""},"action":"inserted"}

其中 TRANSACTION_NO 是使用触发器生成的字段。

最佳答案

据我所知,除非您使用 Postgres,否则您必须查询新行(在这种情况下,您可以尝试名为“options.returning”的 Model.create 选项)

两个快速测试没有解决问题:

  • afterCreate Hook - 模型仍将触发器创建的字段显示为 null。
  • 具有来自数据库函数的默认值的模型 - 该模型显示函数调用,不是函数的结果(它确实进入了数据库字段)。

希望其他人有解决方案!

关于mysql - 从sequelize中的插入中获取自动生成(通过触发器)字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54635639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com