2017-03-29 19 views
0

クライアント側にサーバー側のコレクションを公開したいと思います。サーバー側でMongoDBコレクションをサーバーからクライアントに公開できませんMeteor

MedicalCenters = new Mongo.Collection('medicalCenters'); 

Meteor.publish('medicalCenters',function() { 
    return MedicalCenters.find({}); 
}); 

私は、このコレクションは、特定のテンプレートがアクセスすることにしたいです。 Thefore、

クライアント側で

Template.doctor.onCreated(function() { 
    Meteor.subscribe('medicalCenters'); 
}); 

は、今私は、クライアント側のテンプレートからのデータを渡すことができ、さらにはサーブ側コレクションに書き込みます。しかし、それはサブスクリプションが動作しないと思われるので、テンプレートにコレクションデータを表示できません。 (コレクションはMongol Meteortoysには表示されません)

どうすればこの問題を解決できますか?医療センターを通じて

Template.doctor.helpers({ 
    medicalcenters() { 
    return MedicalCenters.find(); 
    } 
}); 

次に、あなたのテンプレートのことができますループ内

<template name="doctor"> 
    {{#each medicalcenters}} 
     {{name}} 
    {{/each}} 
</template> 
+0

どのファイル構造を使用していますか?あなたは ''/imports''ディレクトリを使っていますか? また、サブスクリプションの情報をテンプレートに表示するヘルパーがありますか? – Sean

+0

私は/ importsを使用しません。私はカスタムファイル構造を使用します。ヘルパーのコレクションをどのように参照するのですか? (どのような名前で) –

答えて

2

あなたのコレクションを置いていないようですね:

+0

ありがとうございます。私はコレクションの定義をルートフォルダに置き、現在はMongolに表示されています。 –

0

テンプレートにデータを送信するためにヘルパーを追加してみてくださいクライアントとサーバーの両方で実行される共通の場所にある定義コードです。コレクション自体がmongolに表示されていないと言っているので、私はこの前提を立てています。

publish/subscribeを有効にするには、クライアント側(minimongoを使用)とサーバー側(mongodbを使用)の両方にコレクションが存在する必要があることに注意してください。

詳細については、Meteor Application Structureガイドを参照してください。ただし、コレクション定義コードは、特別なディレクトリにないファイル(例:server/またはclient/フォルダ)に配置する必要があります。これにより、コードがクライアントとサーバーの両方で実行されます(meteor api docs)。

特殊なディレクトリ以外のすべてのJavaScriptファイルは、クライアントとサーバーの両方にロードされます。古い流星日で

(私たちが持っていた前imports/フォルダ)の人々はしばしば流星プロジェクトのルート内lib/フォルダ内の自分のコレクション定義コードを配置。今度は、import/api/ディレクトリ内にあることが一般的であり、hereと記載されています。

関連する問題