繁体   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