1

FS.Collection オブジェクトに基づいてリアクティブ テーブルを実装するのに苦労しています。aldeed/meteor-tabular と aslagle/reactive-table の両方を試しましたが、コレクションが存在しないように見えるため、どちらも失敗します。ただし、リアクティブ テーブル パッケージを使用せずにコレクションからフィールドをサブスクライブして取得すると、データは問題なく表示されます。私は何が欠けていますか?両方のパッケージが機能しないのは偶然ではありません...

aslagle/reactive-table パッケージを使用した私の実装は次のとおりです...

  //template
  <template name="documentTable">
  {{#if Template.subscriptionsReady}}
    {{> reactiveTable settings=settings}}
  {{else}}
    {{> spinner}}
  {{/if}}
  {{#if currentUser}}
    {{> fileUpload}}
  {{/if}}
</template>

//documents js
Template.documents.onCreated( () => {
  p_id = FlowRouter.current().params.id;
  Template.instance().subscribe('documents', p_id);
});

Template.documents.helpers({
  documents: function () {
    return Documents.find();
  },

  settings: function () {
    return {
      collection: documents,
      showFilter: false,
      rowsPerPage: 5,
      showNavigation: auto,
      showRowCount: true,
      fields: ['_id','userId','propertyId','uploadedAt']
    };
  }
});

//collection definition 
if (Meteor.isServer) {
  var docStore = new FS.Store.S3("documents", {
    region: "eu-west-1",
    accessKeyId: (Meteor.isServer && !process.env.AWS_ACCESS_KEY_ID ? Meteor.settings.AWSAccessKeyId : null),
    secretAccessKey: (Meteor.isServer && !process.env.AWS_SECRET_ACCESS_KEY ? Meteor.settings.AWSSecretAccessKey : null),
    bucket: Meteor.isServer && process.env.AWS_S3_BUCKET || Meteor.settings.AWSBucket,
    folder: "documents"
  });

  Documents = new FS.Collection("Documents", {
    stores: [docStore],
    filter: {
      allow: {
        contentTypes: ['application/pdf']
      }
    }
  });
}
// end server

if (Meteor.isClient) {
  var docStore = new FS.Store.S3("documents");

  Documents = new FS.Collection("Documents", {
    stores: [docStore],
    filter: {
      allow: {
        contentTypes: ['application/pdf']
      }
    }
  });
}
// end client

// allow rules
Documents.allow({
  insert: function(userId) {
    // only allow insert from signed in user
    return userId != null;
  },
  update: function(userId) {
    // only allow update from signed in uesr
    return userId != null;
  },
  download: function() {
    return true;
  },
});

リアクティブ テーブルの場合、引数が Mongo.Collection、カーソル、または配列のインスタンスではないというエラーが表示されますが、meteor-tabular では、ReferenceError が発生し、Documents ではないことが示されているため、起動に失敗します。定義されています。

これについて何か考えている人はいますか?

4

1 に答える 1