Loopback Hooks: server / boot / userHook.js находит Role и устанавливает RoleMapping для созданного пользователя. Экземпляр роли не определен - PullRequest
0 голосов
/ 03 июня 2019

Я пытаюсь создать удаленный хук, который находит Роль с тем же именем, что и атрибут «тип», который задается при публикации нового пользователя. Проблема в том, что модели не доступны. Когда я использую 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)

...