[英]Updating data and new object relationship - sequelize
我的快速路線上有這個 function 更新用戶信息及其角色。 角色是另一個 Sequelize Object,我已經建立了一對多的關系:
User.belongsTo(Role);
Role.hasMany(User);
在我的路線中,這是我的更新功能:
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" };
}
function 可以很好地更新數據庫中的信息和新角色,問題是返回的用戶有時沒有更新的信息,而是以前的信息。 我不確定我是否正在實施這個錯誤,或者嘗試更新用戶 model 然后在當時分配一個新角色會破壞某些東西。
有任何想法嗎? 謝謝!
sequelize 中的大多數方法都是異步的...我沒有使用我的 await 關鍵字讓異步代碼在繼續之前解析。
await modUser.reload();
await modUser.save();
感謝@Heiko TheiBen
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.