更新数据和新对象关系- sequelize



在我的快速路由上有这个函数,用于更新用户信息及其角色。角色是另一个Sequelize Object,我已经将关系设置为一对多:

User.belongsTo(Role);
Role.hasMany(User);

下面是我的updatefunction:

const UpdateUser = async user => {
if (Object.keys(user).length !== 0) {
const { id, firstName, lastName, phone, email, role } = user;
let modUser = await User.findOne({ where: { id }, include: [{ model: Role}] });
if (modUser.firstName !== firstName) modUser.firstName = firstName;
if (modUser.lastName !== lastName) modUser.lastName = lastName;
if (modUser.phone !== phone) modUser.phone = phone;
if (modUser.email !== email && UniqueEmail(email)) modUser.email = email;
if(modUser.Role.id !== role) {
await modUser.setRole(await Role.findByPk(role));
}
modUser.save();
modUser = await User.findOne(
{
where: { id },
include: [{ model: Role}],
attributes: { exclude: ['RoleId', 'password'] }
},
);
return modUser.reload();
}
return { error: "No user found" };
}

该函数可以很好地更新数据库中的信息和新角色,问题是返回的用户有时没有更新的信息,而是以前的信息。我不确定我是否实现了这个错误,或者试图更新用户模型,然后在当时分配一个新的角色正在破坏某些东西。

任何想法?谢谢!

sequelize中的大多数方法都是异步的…我没有使用await关键字让异步代码在继续之前解析。

await modUser.reload();
await modUser.save();

感谢@Heiko TheiBen

最新更新