2016-04-20 7 views
0

Vielleicht verpasse ich hier etwas, aber ich bekomme keine Daten von meiner db in meine Komponente.Daten werden nicht durch Komponenten von Meteor ausgesetzt.

Ich benutze reagieren und Meteor (w/Mantra), mit simpleSchema/collection2 auf dem Server. Soweit ich das beurteilen kann, habe ich mein Publish/Subscribe Setup richtig eingerichtet.

Ich habe Dinge mit dem Mantra CLI aufgebaut. (Die durch die Art und Weise ist genial) Heres ist mein Setup:

Komponente: (Client/modules/components/sidebar_hubs.js)

import React from 'react'; 
const renderIfData = (hubs) => { 
if (hubs && hubs.length > 0) { 
    return hubs.map((hub) => { 
     return <li key={ hub._id }>{ hub.name }</li>; 
    }); 
} else { 
return <p>No hubs yet!</p>; 
} 
}; 

const SidebarHubs = ({hubs}) => (

<div> 
    <h1> Hubs </h1> 
    {hubs.length} 
    <ul> { renderIfData(hubs) } </ul> 
    </div> 
); 

export default SidebarHubs; 

Container (Client/modules/Container/sidebar_hubs. js)

import {useDeps, composeAll, composeWithTracker, compose} from 'mantra-core'; 
import SidebarHubs from '../components/sidebar_hubs.js'; 


export const composer = ({context}, onData) => { 

const {Meteor, Collections} = context(); 
const subscription = Meteor.subscribe('hubs'); 

if (subscription.ready()) { 
    const hubs = Collections.Hubs.find().fetch(); 
    onData(null, { hubs }); 
} 

}; 

export const depsMapper = (context, actions) => ({ 
    context:() => context 
}); 

export default composeAll(
    composeWithTracker(composer), 
    useDeps(depsMapper) 
)(SidebarHubs); 

Publikation: (Server/Publikationen/hubs.js)

import {Hubs} from '/lib/collections'; 
import {Meteor} from 'meteor/meteor'; 
import {check} from 'meteor/check'; 

export default function() { 
    Meteor.publish('hubs', function() { 
    return Hubs.find(); 
    }); 
} 

Was fehlt mir hier offensichtlich?

+1

Können Sie das Ergebnis näher erläutern? (Wird die Komponente gerendert? Wird sie ohne Daten gerendert? Haben Sie das DDP-Abonnement untersucht, um herauszufinden, ob Daten an den Client gesendet wurden? Haben Sie Daten in MiniMongo selbst?) – MasterAM

+0

Die Antwort wurde einfach nicht veröffentlicht Ich habe meine Komponente direkt und nicht meinen Container für die Komponente importiert. – Justin

Antwort

0

Diese verwirrend zu debuggen, als nichts brach ... Und die Komponente wurde gerendert, nur ohne Daten.

Ich warf ein paar console.logs herum und es schien, als würde mein Container nicht einmal ran. Als ich dachte, dass es etwas Offensichtliches war, ugh .... In meiner main_layout.js Datei.

Von

import SidebarHubs from '../components/sidebar_hubs.js'; 

zu:

import SidebarHubs from '../containers/sidebar_hubs.js'; 

funktioniert wie ein jetzt Charme. Gute Debugging-Fähigkeiten reichen weit ...