Я был уверен, что правильно создал свою коллекцию, опубликовал данные, подписался на правильную публикацию и проверил, действительно ли данные появлялись в оболочке Mongo. Я даже console.log () сделал данные, которые были опубликованы, чтобы убедиться, что публикация работала. Тем не менее, следующая строка кода ничего не возвращает:
const maybeMeet = Meets.find({meetId: maybeId}).fetch();
Это можно найти ниже и в строке 39 /client/imports/routes/routes.js
в связанном репо.
В какой-то момент я даже попытался создать новый метод Meteor 'meets.query'
, который бы просто публиковал все необходимые мне данные (небезопасно), предотвращая необходимость в публикациях и подписках (теперь это закомментировано в строке 59 *) 1010 *). Это тоже не сработало. В целом, кажется, что клиент не может получить какие-либо данные с сервера, но переход от клиента к серверу, кажется, работает (я мог бы вставить вещи в свою коллекцию Meets).
Вот источник проблемы (часть routes.js
):
export const routes = (
<div id='app'>
<Header />
<Router history={browserHistory}>
<Switch>
<Route exact path="/" render={() => {
return <Landing />
}} />
<Route path="/before" render={() => {
return <Before />
}} />
<Route path="/meet" render={() => {
Meteor.subscribe('allMeets');
const maybeId = queryString.parse(location.search).m;
console.log(typeof maybeId);
console.log(maybeId);
const maybeMeet = Meets.find({meetId: maybeId}).fetch(); //***RETURNS NOTHING!***
return maybeMeet.length ? <Created meet={maybeMeet[0]} /> : <NotFound />;
}} />
<Route path="*" render={() => {
return <NotFound />
}} />
</Switch>
</Router>
</div>
);
Здесь я публикую данные (часть `meet.js '):
if (Meteor.isServer) {
Meteor.publish('allMeets', function() {
return Meets.find();
});
}
Пожалуйста, смотрите репозиторий для полного кода, если вам нужно увидеть больше: https://github.com/kpeluso/meetr
Я прошу прощения за грязный код - это новый проект.