【问题标题】:Make reactive joins in Meteor+ReactJS在 Meteor+ReactJS 中进行反应式连接
【发布时间】:2017-04-04 12:48:40
【问题描述】:

已经为此苦苦挣扎了很长时间;使用我的 Meteor+ReactJS 应用程序,我想在 MainCollection 和 SubCollection 之间建立反应式连接。 PublishComposite 可能正是我所需要的。但是,当 SubCollection 更新时,这不是响应式的!

有人知道如何使用流星+react 进行反应式服务器端连接吗?

服务器代码

import { publishComposite } from 'meteor/reywood:publish-composite';
Meteor.MainCollection('maincollection.pub.all', {
  find: function () {
    return MainCollection.find();
  },
  children: [
    {
      find: function (doc) {
        return SubCollection.find(
          { mainCollectionId: doc._id },
          {
            sort: { createdAt: -1 }, limit: 1,
            fields: {
              completedAt: 1,
              mainCollectionId: 1,
            }
          })
      }
    }
  ]
});

客户端容器

export default createContainer(() => {
  let mainCollectionSub = Meteor.subscribe('maincollection.pub.all');
  options = {
    transform: function (doc) {
      doc.subcollection = SubCollection.findOne({
        mainCollectionId: doc._id }, ).fetch();
      return doc;
    }
  }
    var maincollection = MainCollection.find({}, options).fetch();
  return {
    maincollection: MainCollection.find({}, options).fetch(),
  }
}, MainCollectionView);

【问题讨论】:

    标签: reactjs meteor meteor-react


    【解决方案1】:

    在您的示例中,SubCollection.findOne()transform 处理程序内部而不是createContainer 的第一个参数中使用之前不是反应式的。试试这个:

    export default createContainer(() => {
      let mainCollectionSub = Meteor.subscribe('maincollection.pub.all');
      options = {
        transform: function (doc) {
          doc.getSubCollection = function () {
            return SubCollection.findOne({
              mainCollectionId: this._id,
            });
          };
          return doc;
        }
      }
      return {
        maincollection: MainCollection.find({}, options).fetch(),
        subcollections: SubCollection.find().fetch(),
      };
    }, MainCollectionView);
    

    然后你可以调用doc.getSubCollection(),它是相关子集合的反应数据源。

    【讨论】:

      猜你喜欢
      • 2014-12-21
      • 1970-01-01
      • 2016-02-02
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 2016-08-12
      • 2016-05-11
      相关资源
      最近更新 更多