Node.js 在Sequelize.js中将默认角色添加到多个关系中
我有两个通过多对多关系连接的Node.js 在Sequelize.js中将默认角色添加到多个关系中,node.js,orm,sequelize.js,Node.js,Orm,Sequelize.js,我有两个通过多对多关系连接的Sequelize.js模型 用户: 角色: 表用户角色是自动创建的 在创建新的用户时,如何设置将插入到用户角色中的默认角色?有没有办法在模型定义中定义它,或者我只需要创建User新用户,然后在一个事务中创建关系?首先,您需要为用户角色创建一个模型,在创建之后,您必须在用户模型中设置一个钩子,该钩子将自动将角色插入到用户角色表中 这就是你能做到的 例如: 用户模型 const { hooks } = require('./user-role.hook'); modul
Sequelize.js
模型
用户:
角色:
表用户角色
是自动创建的
在创建新的
用户
时,如何设置将插入到用户角色中的默认角色?有没有办法在模型定义中定义它,或者我只需要创建User
新用户,然后在一个事务中创建关系?首先,您需要为用户角色创建一个模型,在创建之后,您必须在用户模型中设置一个钩子,该钩子将自动将角色插入到用户角色表中
这就是你能做到的
例如:
用户模型
const { hooks } = require('./user-role.hook');
module.exports = (sequelize, DataTypes) => {
const model = sequelize.define('User', {
email: {
type: DataTypes.STRING,
unique: true,
allowNull: false
},
password: {
type: DataTypes.CHAR,
length: 60,
allowNull: false
}
}, { hooks });
model.associate = models => {
model.belongsToMany(models.Role, {
hooks: true,
through: 'user_roles'
})
};
return model;
};
挂钩文件
exports.hooks = {
afterCreate: (User, payload) => {
AddUserRole(User, payload);
}
}
function AddUserRole(User, payload) {
let InsertArr = {
user_id: User._id,
role_id: 1 // pass default role id
}
model.UserRole.create(InsertArr);
}
很好,如果我需要在一次交易中完成呢?可能吗?是的,如果您使用事务,您必须在用户创建之后调用它,在这种情况下,不要使用钩子。
const { hooks } = require('./user-role.hook');
module.exports = (sequelize, DataTypes) => {
const model = sequelize.define('User', {
email: {
type: DataTypes.STRING,
unique: true,
allowNull: false
},
password: {
type: DataTypes.CHAR,
length: 60,
allowNull: false
}
}, { hooks });
model.associate = models => {
model.belongsToMany(models.Role, {
hooks: true,
through: 'user_roles'
})
};
return model;
};
exports.hooks = {
afterCreate: (User, payload) => {
AddUserRole(User, payload);
}
}
function AddUserRole(User, payload) {
let InsertArr = {
user_id: User._id,
role_id: 1 // pass default role id
}
model.UserRole.create(InsertArr);
}