2016-08-04 32 views
1

Ich benutze Meteor + reagieren und versuche, Daten auf der Client-Seite zu abonnieren. Ich bekomme jedoch weiterhin den Fehler, dass die Sammlung, die ich zurückgeben möchte, nicht definiert ist.Meteor Subscription undefined in react Komponente

Mein server.js:

import { Meteor } from 'meteor/meteor'; 
import { Mongo } from 'meteor/mongo'; 
import { check } from 'meteor/check'; 

export const Reminders = new Mongo.Collection('reminders'); 

Meteor.publish('reminders', function() { 
    return Reminders.find(); 
}); 

Meine Reminders.jsx Datei:

RemindersList = React.createClass({ 

    mixins: [ReactMeteorData], 

    getInitialState: function() { 
     return { 
      reminders: [ 
       { 
        name: 'Pill 1', 
        description: 'Pill 1 description', 
        time: '9am' 
       }, 

       { 
        name: 'Pill 2', 
        description: 'Pill 2 description', 
        time: '9am' 
       }, 

       { 
        name: 'Pill 3', 
        description: 'Pill 3 description', 
        time: '9am' 
       } 
      ] 
     } 
    }, 

    getMeteorData: function() { 

     var data = {}; 
     var handle = Meteor.subscribe('reminders'); 

     if(handle.ready()) { 
      data.reminders = Reminders.findOne(); //Returns `Reminders` is not defined    

     } 

     return data; 

    }, 

    render: function() { 
     console.log(this.data); //returns an empty object 
     return (
      <h1>Test</h1> 
     ) 
    } 

}); 

Der spezifische Fehler I ist in der getMeteorData Funktion bin immer:

Reminders is not defined.

Allerdings definiere ich klar Reminders in meiner server.js-Datei. Weiß jemand, was falsch sein könnte?

Vielen Dank im Voraus!

Antwort

1

Ihre Sammlung ist nur auf der Serverseite definiert. Sie müssen es in eine Datei einfügen, die auf beiden Seiten zugänglich ist, und sie sowohl vom Server- als auch vom Client-seitigen Code importieren.