「ストーリー」を表示するとき、そのストーリーを自動的にサブスクライブし、ページを変更するときにサブスクライブされたストーリーを変更したいと思います。
これは私が得たものです:それは機能しているようですが、複数の自動サブスクライブは間違っているようですか?
route("stories/:storytitle/:storyID", function(storyTitle, storyID) {
Session.set('storyID', storyID)
Meteor.autosubscribe(function() {
var storyID = Session.get('storyID');
if (storyID)
Meteor.subscribe("story", Session.get("storyID"), function() {
Router.goto('story')
});
});
});
Template.story.data = function() {
var storyID = Session.get('storyID');
var story = Stories.findOne({
_id: storyID
})
return story;
};
これは私が一般的に探しているものとより一致しているようですが、ボイラープレートがたくさんあります。テンプレートヘルパーにクエリを入れるのではなく、ルートにクエリを入れるのも間違っているようです。
route("stories/:storytitle/:storyID", function(storyTitle, storyID) {
Session.set('storyID', storyID)
var story = Stories.findOne({
_id: storyID
})
if (story)
Router.goto('story')
});
Meteor.autosubscribe(function() {
var storyID = Session.get('storyID');
if (storyID)
Meteor.subscribe("story", Session.get("storyID"), function() {
Router.goto('story')
});
});
Template.story.data = function() {
var storyID = Session.get('storyID');
var story = Stories.findOne({
_id: storyID
})
return story;
};
これらのどちらかがそれを行う正しい方法ですか?ストーリーの自動サブスクリプションを維持するにはどうすればよいですか?ページを変更するとサブスクリプションが自動的に変更されますか?
直感的に私はこれを試してみます:
route("stories/:storytitle/:storyID", function(storyTitle, storyID) {
Session.set('storyID', storyID)
Router.goto('story')
});
Meteor.autosubscribe(function() {
var storyID = Session.get('storyID');
if (storyID)
Meteor.subscribe("story", Session.get("storyID"), function() {
Router.goto('story')
});
});
これは単に機能しません。ストーリーが読み込まれ、白い画面/エラーがスローされる前に、ストーリールートに移動しようとします。