gpt4 book ai didi

javascript - 如何在 PostgreSql 中使用 Sequelize 获取刚刚插入的数据?

转载 作者:行者123 更新时间:2023-12-01 13:11:23 25 4
gpt4 key购买 nike

我想在将用户添加到我的“WOD”表后获得更新的表值。例如,我的 WOD 表中有 2 个用户,在添加第三个用户后,我想用我刚刚插入的数据(第三个人)返回给客户端的响应。但是现在,我只能返回前 2 个用户,因为我无法获取更新的值。当然,我可以在插入后进行另一个查询以获取更新的表值,但是有没有更好的解决方案?这是我的代码;

const addUser = async (req, res) => {
try {
const { userId, wodId } = req.body;

if (!userId || !wodId) {
res.status(400).send({ status: false, message: 'need userId and wodId' });
}

const wod = await Wod.findByPk(wodId, {
include: [
{
model: User,
as: 'Participants',
through: { attributes: [] }
}
]
});
//check capacity if full.
if (wod.Participants.length >= wod.capacity) {
res
.status(403)
.send({ status: false, message: 'Capacity of this class is full!' });
}
const result = await wod.addParticipants(userId);

res.status(201).json({ status: !!result, wod });
} catch (error) {
res.status(500).send({ status: result, message: error.message });
console.log(error.message);
}
};

最佳答案

作为多对多关联的结果,sequelize.sync 将生成一些 functions为了我们。您使用了 addParticipants 函数,它返回一个添加到 assocation(userwod) 表中的数组。

在这个数组中你会发现一些 id 字段(连接表字段)因为你只是像这样运行 INSERT INTO 'user_wods' ('user_id''wod_id') VALUES (2,1)。如果您想返回添加的用户的信息,那么您应该运行 SELECT * FROM 'user' WHERE 'id'=2

你必须调用重新加载函数来获取第三个人。

await wod.reload()

关于javascript - 如何在 PostgreSql 中使用 Sequelize 获取刚刚插入的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59695989/

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