JS Merkwürdiges Verhalten des Objekts beim Versuch, auf eine Loopback-bezogene Modellabfrage zuzugreifen

Ich arbeite mit dem Loopback Framework und mache ein Webprojekt. Aber ich denke, dass die Frage, die ich hier stelle, weniger damit zu tun hat, als mit allgemeinen Javascript / Node.JS-Kenntnissen.

n einem Teil des Codes mache ich:

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);
            }
        }
});

Ok damit, aber es schlägt fehl, wenn Sie versuchen, @ zu vergleichroles[i].role.name. Also habe ich mich angemeldet, was dasroles[i] Objekt enthalten.

    { 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, nichts falsches, aber es schlägt immer noch fehl, also habe ich versucht, nur das @ zu druckrole Eigentum. Und zu meiner Überraschung:

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

So, dasrole Eigenschaft scheint eine Art Funktion zu sein? Aber wie wurde es vorher richtig ausgedruckt?

Eventually in meiner Frustration verloren versuchte ichvar role = JSON.parse(JSON.stringify(roles[i]));

Und dann könnte ich normal auf jede Eigenschaft des Objekts zugreifen, aber das ist weder sauber noch normal.

Dies hat mich zum ersten Mal seit Jahren in der JS-Programmierung umgehauen (irgendwie amateurhaft), und ich würde mich freuen, wenn mir jemand dies erklären könnte. Vielen Dan

EDIT: Es scheint, dass es spezifisch für dieses Framework ist, daher ändere ich den Titel, um der Community zu helfen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage