2016-11-09 5 views
0

Meteorがデータベースレコードを返す方法を理解しようとしています。子の値は実際には復帰にいないようだ、なぜ私はこのJSON方法は、単に出力および配列、またはより具体的にしない理由として、少し混乱しているMeteorでMongoDB項目を返す

Template.body.helpers({ 
    items(){ 
    return Items.find({}); 
    }, 
    json(){ 
    console.log(this.items()); 
    }, 
    loggedIn(){ 
    return Meteor.userId(); 
    } 
}); 

:私は、次のコードを実行していますよ値の配列

私はスペースバーを使って値をインラインhtmlで得ることができますが、私はjsを通してそれらの値にアクセスする方法がわかりません。私はここで何が欠けているのですか?

答えて

1

複数のヘルパー間、またはテンプレートとルートの間でもデータベースレコードを解析する場合は、セッション変数を使用しないでください。ご例えば

Template.body.helpers({ 
    items(){ 
    const items = Items.find({}); 
    Session.set('itemArray', items); 
    return items; 
    }, 
    json(){ 
    console.log(Session.get('itemArray'); 
    }, 
    loggedIn(){ 
    return Meteor.userId(); 
    } 
}); 

はあなたのためにこの仕事をしていますか?

+0

これは確かに複数のクエリを作成しない方法をクリアしますが、私はまだ返されているドキュメント(レコード)にアクセスする方法がわかりません。 おそらく、この質問をフレーム化するより良い方法は、検索を実行して結果のドキュメント(オブジェクト)をコンソールに出力する最良の方法は何ですか? –

2

Collection.find()は、のカーソルを返します。これは、Blazeテンプレート(たとえば)で使用できる関数です。

Collection.find().fetch()は、オブジェクトの配列を返します(文書)。

+0

OKです。その後、fetch関数はfind関数に関連しているため、Blazeカーソルと文字列化されたjson配列/オブジェクトの両方を使用したい場合は、2つの個別の検索を行う必要がありますか? セッションは、グローバルにアクセス可能な変数を作成する最良の方法ですか? –

+0

2つの検索を行う必要はありません。 'const cursor = Collection.find()'と 'console.log(cursor.fetch())'の後に行うことができます。セッションはグローバル*リアクション*変数として優れています(つまり、依存コードを変更すると実行されます)。 [reactive vars](https://docs.meteor.com/api/reactive-var.html)も参照してください。 –

関連する問題