我的模型定义如下
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);
};
权限是预定义的列表并存储在权限表中。我想使用现有权限一次创建具有所有关联的用户。如何使用 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/