2017-10-14 2 views
0

Die nächsten Zeilen funktionieren und ich kann in der Konsolenprotokoll das ganze Objekt sehen:Ich kann nicht die Eigenschaften eines Objekts zugreifen

Meteor.subscribe('projects') 
var oneProject = Projects.findOne(key1); 
console.log(oneProject) 

in der Konsole ich die Eigenschaften des oneProject sehen können, auch die name Eigenschaft .

nun mit den folgenden Zeilen, das Ergebnis ist ein Fehler:

Meteor.subscribe('projects') 
var oneProject = Projects.findOne(key1); 
console.log(oneProject.name) 

Der Fehler ist: „nicht Eigenschaft lesen‚name‘undefinierter“.

Dies ist der gesamte Code:

import { Meteor } from 'meteor/meteor'; 
import { withTracker } from 'meteor/react-meteor-data'; 
import { Projects } from '/imports/api/projects.js'; 
import ProjectFormUpdate from './ProjectFormUpdate.jsx'; 

export default ProjectFormUpdateContainer = withTracker(({ key1 }) => { 
    Meteor.subscribe('projects') 
    var oneProject = Projects.findOne(key1); 
    console.log(oneProject.name) 
    return { 
    oneProject:oneProject, 
    }; 
})(ProjectFormUpdate); 

Antwort

2

Ein Abonnement in Meteor ist asynchron. Dies bedeutet, dass die Daten nicht immer sofort verfügbar sind.

Tracker.autorun(() => { 
    const sub = Meteor.subscribe('projects'); 
    if (sub.ready()){ 
    const oneProject = Projects.findOne(key1); 
    console.log(oneProject.name); 
    } 
}); 

wird nicht versuchen, das Projekt zu finden, bis das Abonnement bereit ist.

+0

Ok jetzt kann ich den "Namen" in die Konsole stellen, aber es lässt mich das Projektdokument nicht an die Komponenteneigenschaft übergeben. Der Fehler: "Kann nicht undefiniert oder null zu Objekt an Schlüsseln konvertieren ()" – Reactib

+0

Vielleicht sollte ich eine andere Frage öffnen ... – Reactib

+0

Ich habe eine andere Frage dazu erstellt: https://StackOverflow.com/Questions/46746047/how- Umleiten eines Meteor-Dokument-Objekt-von-Container-zu-Reagieren-Komponente – Reactib

Verwandte Themen