node.js - 使用关联元数据对插入数据进行序列化

标签 node.js express sequelize.js

我的模型定义如下

User = sequelize.define('User', {....});
User.associate = models => {
    User.hasMany(models.UserPermission);
};

const Permission = sequelize.define('Permission', {...});
Permission.associate = models => {
    Permission.hasMany(models.UserPermission);
};

const UserPermission = sequelize.define('UserPermission', {...});
UserPermission.associate = models => {
    UserPermission.belongsTo(models.User);
    UserPermission.belongsTo(models.Permission);
};

enter image description here

权限是预定义的列表并存储在权限表中。我想使用现有权限一次创建具有所有关联的用户。如何使用 async 和 await 执行此操作?

最佳答案

我强烈建议在您的关联上使用别名,在 User 上可能是这样的。

User.associate = models => {
    User.hasMany(models.UserPermission, { as: 'permissions'});
};

在创建 Controller 时,您可以像这样立即创建 User 和 UserPermission。
controller.create = async (req, res, next) => {
const user = req.body;

try {

    const userCreated = await db.User.create(user, {
        include: [{ model: db.UserPermission}]
    });

    /**
     * User object
     * user: {
     *  username: 'john',
     *  email: john@smith.com
     *  permissions: [{ }] //array of objects because of hasMany an using the alias defined before
     * }
     */

    return res.json(userCreated);
} catch (err) {
    // error here
}
};

关于node.js - 使用关联元数据对插入数据进行序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57508730/

相关文章:

javascript - 将字典存储在数据库中

node.js - mongodb, `cursor.exec`是什么意思?

javascript - 配置 Node express 服务静态 bower_components?

javascript - 为什么我们在使用方法之前添加 req.user 对象?

node.js - 如何传入 `app` 以便在 model.js 文件中创建端点?

javascript - 带有 async 的 node.js 异步回调

node.js - AWS node.js 自动重试失败的 batchWrite()

javascript - Heroku文件上传和node.js

typescript - 我不明白为什么我在使用 ts-jest 和 sequelize 时遇到这个错误

mysql - Sequelize 迁移服务器连接两个数据库