Я пытаюсь создать удаленный хук, который находит Роль с тем же именем, что и атрибут «тип», который задается при публикации нового пользователя. Проблема в том, что модели не доступны. Когда я использую find () для ролей, он не выдает ошибку, но все атрибуты не определены. То же самое происходит для других моделей, таких как пользователь.
Я попытался использовать Model.on («присоединен»), как это необходимо в model.js. Но так как это сервер / boot / .. предоставляется доступ к моделям.
module.exports = function(app) {
const User = app.models.User;
var Role = app.models.Role;
var RoleMapping = app.models.RoleMapping;
User.observe('after save', function setRoleMapping(ctx, next) {
if (ctx.instance) {
if(ctx.isNewInstance) {
// look up role based on type
//
Role.find({where:{name: ctx.instance.type}}, function(err, role) {
if (err) {return console.log(err);}
console.log("Role name: " + role.name) //-> undefined
RoleMapping.create({
principalType: "USER",
principalId: ctx.instance.id,
roleId: role.id //-> undefined
}, function(err, roleMapping) {
if (err) {return console.log(err);}
console.log('User assigned RoleID ' + role.id + ' (' + ctx.instance.type + ')'); //-> User assigned RoleID undefined (admin)
})
});
}
}
next();
});
};
Ожидается последний console.log () -> Пользователь назначил RoleID 5cd978a1130e7142bef28042 (admin)
Фактический результат -> Пользователь назначил RoleID не определено (admin)