Я пытаюсь отобразить некоторые реляционные данные в шаблоне пространственных символов Meteor. В частности, я два сборника, Местоположение и Погода. Они выглядят примерно так:Можно ли переключить фокус коллекции в шаблонах пространственных символов Метеор?
Location {
_id: 'full-name',
title: 'Full name',
lat: '123.456',
long: '123.456',
order: 1
}
Weather {
locName: 'full-name', // this name always matches a location _id
temperature: '41.3'
}
я хотел бы, чтобы отобразить информацию из обоих этих коллекций на одной странице. Чтобы я мог показывать самую последнюю погоду из каждого места (их 4-20 на странице). Чтобы сделать это, я опубликовал запрос Монго из обеих коллекций, как так на стороне сервера:
Meteor.publish('allLocations', function() {
return [
Locations.find({}, { sort: { order: 1 } }),
Weather.find({}) // The weather
]
});
Я тогда подписаться на эту публикацию в маршрутизаторе (железо-маршрутизатор):
Router.map(function() {
this.route('locations', {
waitOn: function() {
return Meteor.subscribe('allLocations');
}
}
});
Тем не менее, я застреваю, когда попадаю в мой шаблон. Я не могу понять синтаксис для переключения фокуса сбора в космос.
Вот psuedo-код для шаблона, который я пытаюсь разобрать, но я знаю, что это в настоящее время не работает.
<template name="locations">
<div class="locations-grid">
{{#each locations}}
<div class="location {{_id}}">
This is the location template
<h1>{{title}}</h1>
{{#each weather}}
<!-- Trying to pass the _id along to the weather template for filtering -->
{{> weather _id}}
{{/each}}
</div>
{{/each}}
</div>
</template>
<template name="weather">
This is the weather template
{{#with weather}}
<!-- Ideally, we've now switched contexts to the weather collection -->
<h2>Temperature: <div class="temp">{{temperature}}</div></h2>
{{/with}}
</template>
Так что я задаю вопрос, где я могу указать пробелы для переключения контекстов на погоду? Как передать переменную _id в шаблон погоды, чтобы я мог выбрать нужные данные из коллекции? Я знаю, что мне не хватает большого шага здесь, я просто не могу понять, какую часть пространства Метеор изучить. Я знаю, что мне может потребоваться указать подписку на шаблон погоды, но я не знаю, где это сделать, поскольку это не совсем маршрут, так как у него не будет собственной страницы. Он просто живет как подшаблон в шаблоне местоположений.
Спасибо за любые советы или возможные предложения по реструктуризации.
Спасибо. Это очень полезно. Я также прочитал связанный пост на Discover Meteor. Я все еще немного озадачен одним изменением. Для этого я могу только опубликовать коллекцию Location в шаблон местоположения. Как я могу указать шаблон местоположения, на который подписывается подписка? Я привык делать это в маршрутизаторе, но поскольку у этого местоположения нет маршрута, я не уверен, где * эта подписка будет идти. –
Не похоже, что вам нужно что-то изменить. Подписки не относятся к шаблону - это запрос на то, чтобы сервер передавал данные в клиентскую базу данных (minimongo). Когда вы переходите к шаблону верхнего уровня, ваш маршрутизатор подписывается на 'allLocations', поэтому все данные о погоде и местоположении будут доступны для всех шаблонов. Имеет ли это смысл? –
Когда я сохраняю и папку «Местоположение» и «Погода» в публикации allLocations, #each Weather возвращает «this» как объект Locations, но также включает записи Weather. –