console.log zeigt die erwarteten Objekteigenschaften nicht an

Ich habe den folgenden Code in Javascript in meiner node.js-Anwendung. Bestimmte Objekte sind jedoch nicht in meiner Variablen gespeichertappointment. Selbst wenn ich sie einstelle, funktioniert es, wenn ich direkt darauf zugreife:console.log(appointment.test);

Was habe ich in diesem Code falsch gemacht?

var appointment = {
    subscribed: false,
    enoughAssis: false,
    studentSlotsOpen: false
};
console.log(appointment);
for (var key in appointmentsDB[i]) {
    appointment[key] = appointmentsDB[i][key];    
}

appointment.test= "res";

console.log(appointment.test);
console.log(appointment);

Und hier ist die produzierte Ausgabe:

{ subscribed: false,
  enoughAssis: false,
  studentSlotsOpen: false }
res
{ comment: 'fsadsf',
  room: 'dqfa',
  reqAssi: 3,
  maxStud: 20,
  timeSlot: 8,
  week: 31,
  year: 2013,
  day: 3,
  _id: 51f957e1200cb0803f000001,
  students: [],
  assis: [] }

Die Variableconsole.log(appointmentsDB[i]) sieht aus wie:

{ comment: 'fsadsf',
  room: 'dqfa',
  reqAssi: 3,
  maxStud: 20,
  timeSlot: 8,
  week: 31,
  year: 2013,
  day: 3,
  _id: 51f957e1200cb0803f000001,
  students: [],
  assis: [] }

Der folgende Befehl:

console.log(Object.getOwnPropertyNames(appointmentsDB[i]), Object.getOwnPropertyNames(Object.getPrototypeOf(appointmentsDB[i])));

Zeigt an:

[ '_activePaths',
  '_events',
  'errors',
  '_maxListeners',
  '_selected',
  '_saveError',
  '_posts',
  'save',
  '_pres',
  '_validationError',
  '_strictMode',
  'isNew',
  '_doc',
  '_shardval' ] [ 'assis',
  'timeSlot',
  'db',
  '_schema',
  'id',
  'base',
  'day',
  'collection',
  'reqAssi',
  'constructor',
  'comment',
  'year',
  'room',
  'students',
  'week',
  '_id',
  'maxStud' ]

Allerdings würde ich erwarten, dass meine letzte Ausgabe auch die Einträge test, abonniert, enoughAssis und studentSlotsOpen enthält. Was ist in diesem Code falsch?

Die Lösung bestand darin, die gewünschten Elemente manuell zu kopieren.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage