0

私は初心者で、自分の出版物を機能させるのに少し苦労しています。私のデータには多数の患者がいて、1 人の患者のデータを表示したいと考えています。これは私が私の出版物をどのように構成したかです:

Meteor.publish('patients.single', function (patientId) {
  check(patientId, String);
  return Patients.find({_id: patientId});
});

これが私が購読した方法です:

Router.route('/patients/:_id', {
  layoutTemplate: 'ApplicationLayout',
  yieldRegions: {
    'single_patient': {to: 'content'}
  },
  subscriptions: function () {
    return Meteor.subscribe('patients.single', this.params._id);
  }
});

また、実際のテンプレートを介してサブスクライブしようとしましたが、役に立ちませんでした:

Template.patient_details.onCreated(function () {
  this.subscribe('patients.single', Session.get("currentPatient"));
});

出版は理論的には簡単に思えますが、私はそれらを正しく理解することができないようです. ここで何が間違っていますか?

4

2 に答える 2

0

サブスクリプションがサーバーからミニ mongo にデータを取得するには時間がかかるため、取得したデータを使用する前に、サブスクリプションの準備が整うまで待つ必要があります。

Iron Router を使用している場合は、サブスクライブの代わりに waitOn を使用してみてください。これにより、ルーターはサブスクリプションの準備が整うまで強制的に待機し、サブスクリプション データを取得している間にロード テンプレートをレンダリングします。

Router.route('/patients/:_id', {
  layoutTemplate: 'ApplicationLayout',
  yieldRegions: {
    'single_patient': {to: 'content'}
  },
  waitOn: function () {
    return Meteor.subscribe('patients.single', this.params._id);
  }
  data: function () {
    return Patients.findOne({_id: this.params._id});
  },
});

テンプレート instance.data でデータを利用できるようにするには、data プロパティを使用することもできます。

于 2016-08-26T14:21:51.393 に答える
0

これを試して:

サーバー側のJS

Meteor.publish('patients.single', function (patientId) {
  check(patientId, String);
  return Patients.find({_id: patientId});
});

ルーター JS ファイル

Router.route('/patients/:_id', {
  layoutTemplate: 'ApplicationLayout',
  yieldRegions: {
    'single_patient': {to: 'content'}
  },
  waitOn: function () {
    return Meteor.subscribe('patients.single', this.params._id);
  }
});

クライアント JS ファイル内

Template.patient_details.helpers({
  getData : function(){
        return Collection.find().getch();

});

{{getData}}テンプレートの html ファイルでを呼び出すことを忘れないでください。

于 2016-08-26T15:11:12.860 に答える