最近、ルーターが名前をルーティングするためのコレクションを持っていないように見えるという問題に遭遇しました。
ノードという名前のコレクションがあります。このコレクションには、各ノードにさまざまな種類のデータがある多くのノードからの読み取りが多数あります。これらのノードの name 属性は一意ではありませんが (simpleSchema を使用)。これは、特定のノードが多くのデータ ポイントを送信できるということです。後で、コレクションからこのデータをグラフ化します。ノード挿入は
var sampleInput_4 ={
name : "Tulsa Node",
longitude : -95.982,
latitude : 36.137,
humidity : 78,
tem p: 80,
dew : 20,
pressure : 32,
speed : 12,
direction : 60
};
しかし、これらの挿入物は何千もある可能性があります。そして何千もの異なるノードが挿入されます。ノード コレクション全体を公開し、サイドバーの js ファイルで、Created をコレクション全体にサブスクライブします。これは、この問題をテストするためだけのものです。これがサイドバーのjsファイルです。
Template.sidebar.helpers({
nodes: function(){
var col= Nodes.find().fetch();
return _.uniq(_.pluck(col,'name'));
}
});
Template.sidebar.onCreated(function () {
this.subscribe('nodes');
});
これは、私が望むような一意の名前だけをロードする HTML でうまく機能します。
{{#each nodes}}
<li>
<a href="{{pathFor 'NodePage'}}">
{{this}}
</a>
</li>
{{/each}}
ただし、これは希望どおりにルーティングされません。このようにすると、実際にはルートがありません。ルートはユニークな名前の /name にしたいです。どの文書のどの名前でもかまいません。私がクリックしたものである限り、一意の名前です。ルーターはこちら
Router.route('/:_id', {
name : 'NodePage',
data : function() { return Nodes.findOne(
// this refers to the currently matched
//route.this.params access parts of route
this.params._id);
}
});
私が入れたら
return Nodes.find();
リターン用のサイドバーjsファイルで、ルートが機能します。Iron ルーターの基本的な側面が欠けていますか? また、この後のサイドバーは、コレクション全体のすべての [オブジェクト] を返します。これらをクリックすることはできますが、ルーターはそれらで動作します。