Comportamento estranho do objeto JS ao tentar acessar a consulta de modelo relacionada ao loopback
Estou trabalhando com o Loopback Framework, fazendo um projeto da web. Mas acho que a pergunta que estou expondo aqui tem menos a ver com isso, mas com o conhecimento geral sobre Javascript / Node.JS.
Em uma parte do código, estou fazendo:
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);
}
}
});
Aprovação com isto, mas falha ao tentar compararroles[i].role.name
. Então, eu fui registrar o que oroles[i]
objeto contido.
{ 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, nada de errado, mas ainda falha, então tentei imprimir apenas orole
propriedade. E para minha surpresa:
{ [Function]
update: [Function],
destroy: [Function],
create: [Function],
build: [Function],
_targetClass: 'Role' }
Então orole
propriedade parece ser algum tipo de função? Mas como foi impresso corretamente antes?
Eventualmente, perdido em minha frustração, tenteivar role = JSON.parse(JSON.stringify(roles[i]));
E então eu poderia acessar todas as propriedades do objeto normalmente, mas isso não é limpo nem normal.
Isso me impressionou pela primeira vez em anos de programação JS (embora meio amadorista), e eu ficaria satisfeito se alguém pudesse esclarecer isso para mim. obrigado
Edição: Parece que é específico para este quadro, por isso estou mudando de título para ajudar a comunidade.