簡體   English   中英

更新數據和新的 object 關系 - sequelize

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM