Comportamiento extraño del objeto JS al intentar acceder a una consulta de modelo relacionada con el bucle invertido

Estoy trabajando con el Loopback Framework, haciendo un proyecto web. Pero creo que la pregunta que expongo aquí tiene menos que ver con esto, pero con conocimiento general de Javascript / Node.JS.

En una parte del código, estoy haciendo:

roleMapping.find({
        where: {
            principalType: 'USER',
            principalId: context.principals[0].id
        },
        include: 'role'
    }, function(err, roles){
        console.log(roles[0]);
        for (var i in roles)
        {
            if (roles[i].role.name === 'teamLeader' &&
                roles[i].groupId === context.modelId)
            {
                cb(null,true);
            }else {
                cb(null,false);
            }
        }
});

De acuerdo con esto, pero falla al intentar compararroles[i].role.name. Entonces, fui registrando lo que elroles[i] objeto contenido

    { groupId: 1,
  id: 3,
  principalType: 'USER',
  principalId: 1,
  roleId: 2,
  role: 
   { id: 2,
     name: 'teamLeader',
     description: 'The leader(s) of a team',
     created: null,
     modified: null } }

Ok, no pasa nada, pero aún falla, así que intenté imprimir solo elrole propiedad. Y para mi sorpresa:

{ [Function]
  update: [Function],
  destroy: [Function],
  create: [Function],
  build: [Function],
  _targetClass: 'Role' }

Entonces elrole propiedad parece ser algún tipo de función? Pero, ¿cómo se imprimió correctamente antes?

Finalmente, perdido en mi frustración, intentévar role = JSON.parse(JSON.stringify(roles[i]));

Y luego pude acceder a todas las propiedades del objeto normalmente, pero esto no es limpio ni normal.

Esto me dejó alucinado por primera vez en años de programación de JS (aunque un poco aficionado), y estaría encantado si alguien pudiera aclararme esto. Gracias

EDITAR: Parece que es específico de este Marco, por lo que estoy cambiando el título para ayudar a la comunidad.

Respuestas a la pregunta(1)

Su respuesta a la pregunta