Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 在Meteor+中进行反应性连接;反应_Reactjs_Meteor_Meteor React - Fatal编程技术网

Reactjs 在Meteor+中进行反应性连接;反应

Reactjs 在Meteor+中进行反应性连接;反应,reactjs,meteor,meteor-react,Reactjs,Meteor,Meteor React,已经为此奋斗了很长时间;使用我的Meteor+ReactJS应用程序,我希望在MainCollection和SubCollection之间有一个反应式连接。我需要的可能正是这份出版物。但是,当更新子集合时,这不是反应 有人知道如何使用meteor+react进行反应式服务器端连接吗 服务器代码 import { publishComposite } from 'meteor/reywood:publish-composite'; Meteor.MainCollection('maincollec

已经为此奋斗了很长时间;使用我的Meteor+ReactJS应用程序,我希望在MainCollection和SubCollection之间有一个反应式连接。我需要的可能正是这份出版物。但是,当更新子集合时,这不是反应

有人知道如何使用meteor+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);

在您的示例中,
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()
,它是相关子集合的反应式数据源