Странное поведение объекта JS при попытке получить доступ к запросу модели, связанной с петлей
Я работаю с Loopback Framework, занимаюсь веб-проектом. Но я думаю, что вопрос, который я здесь ставлю, имеет отношение не столько к этому, сколько к общим знаниям Javascript / Node.JS.
В одной части кода я делаю:
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);
}
}
});
Хорошо с этим, но это не удается при попытке сравнитьroles[i].role.name
, Итак, я пошел, чтоroles[i]
объект содержится.
{ 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 } }
Хорошо, ничего плохого, но все равно не получается, поэтому я попытался напечатать толькоrole
имущество. И к моему удивлению:
{ [Function]
update: [Function],
destroy: [Function],
create: [Function],
build: [Function],
_targetClass: 'Role' }
Итакrole
свойство кажется какой-то функцией? Но как это было правильно напечатано раньше?
В конце концов, потерянный в моем разочаровании, я попыталсяvar role = JSON.parse(JSON.stringify(roles[i]));
И тогда я мог бы нормально обращаться к каждому свойству объекта, но это не чисто и не нормально.
Это взорвало мой ум впервые за годы программирования на JS (хотя и любительское), и я был бы рад, если бы кто-то смог мне это прояснить. Спасибо
РЕДАКТИРОВАТЬ: Кажется, что это специфично для этой структуры, поэтому я меняю название, чтобы помочь сообществу.