2016-05-30 5 views
0

Ich spiele mit einer einfachen Meteor Angular 2 App herum, die nur aus der Datenbank liest. Ich habe eine andere App, die die Datenbank ändert. Aber wenn die Datenbank geändert wird, habe ich einen Fehler in der Meteor App bekommen.Meteor Angular2 und extern geändert von Mongodb

Exception in queued task: EXCEPTION: Error in client/match.html:0:19 
ORIGINAL EXCEPTION: TypeError: Cannot read property 'league' of undefined 
ORIGINAL STACKTRACE: 
TypeError: Cannot read property 'league' of undefined 
at DebugAppView._View_MatchComponent0.detectChangesInternal (MatchComponent.template.js:101:59) 
at DebugAppView.AppView.detectChanges (http://localhost:3001/packages/modules.js?hash=5bea6cc36ccb7076b2a2834b250a3c141ff0cd78:57326:14) 
at DebugAppView.detectChanges (http://localhost:3001/packages/modules.js?hash=5bea6cc36ccb7076b2a2834b250a3c141ff0cd78:57415:44) 
at DebugAppView.AppView.detectViewChildrenChanges (http://localhost:3001/packages/modules.js?hash=5bea6cc36ccb7076b2a2834b250a3c141ff0cd78:57346:34) 
at DebugAppView._View_MatchesComponent1.detectChangesInternal (MatchesComponent.template.js:106:8) 
at DebugAppView.AppView.detectChanges (http://localhost:3001/packages/modules.js?hash=5bea6cc36ccb7076b2a2834b250a3c141ff0cd78:57326:14) 
at DebugAppView.detectChanges (http://localhost:3001/packages/modules.js?hash=5bea6cc36ccb7076b2a2834b250a3c141ff0cd78:57415:44) 
at DebugAppView.AppView.detectContentChildrenChanges (http://localhost:3001/packages/modules.js?hash=5bea6cc36ccb7076b2a2834b250a3c141ff0cd78:57341:37) 
at DebugAppView._View_MatchesComponent0.detectChangesInternal (MatchesComponent.template.js:65:8) 
at DebugAppView.AppView.detectChanges (http://localhost:3001/packages/modules.js?hash=5bea6cc36ccb7076b2a2834b250a3c141ff0cd78:57326:14) 
ERROR CONTEXT: 
[object Object] 

Ich verwende autopublish die Sammlung:

import {Mongo} from 'meteor/mongo'; 
export let MatchCollection = new Mongo.Collection('matches'); 

Und Winkelkomponente:

export class MatchesComponent 
{ 
    matches; 
    constructor() { 
     this.matches = MatchCollection.find(); 
    } 
} 

Hinweis: Meteor Blaze Version gut funktioniert. Und ich bin neu in Meteor Angular2.

Danke für alle Hilfe.

Antwort

0

Es sieht aus wie die externe Änderung entfernt eine Eigenschaft Namen innerhalb des Dokuments, das Ihre angular2 View irgendwo verwendet.

Schauen Sie sich das Dokument über meteor mongo an, um zu sehen, wie das Dokument im Speicher vor und nach der Änderung durch den externen Prozess aussieht.

1

Ich nehme an, Sie verwenden *ngFor.

können Sie verwenden diese stabile Weise

this.matches = MatchCollection.find().fetch(); 

MatchCollection.find(); kehrt Mongo.Cursor<any>;

MatchCollection.find().fetch(); kehrt Array<any>

Schräge sollte die bug schon ... festgesetzt

+0

Vielen Dank für Informationen. Ich denke, '.fetch()' ist keine gute Übung, aber ich bin froh, dass dieser Fehler behoben wurde. –

+0

@ LêTrầnTiếnTrung Fühlen Sie sich frei, ein anderes Thema auf Github mit einer kleinen Reproduktion zu schaffen, es wird die ganze Gemeinschaft profitieren. :) –