从Meteor中的React sub传递参数到pub函数?

时间:2017-12-07 05:34:55

标签: reactjs meteor

我发布了我的所有评论集合:

Meteor.publish('comments', function() {
  return Comments.find(
    {},
    { fields: { date: 1, body: 1, user: 1, attachedTo: 1, attachedToID: 1 } },
  );
});

使用以下内容订阅React组件:

export default withTracker(() => {
  let commentsSub = Meteor.subscribe('comments');
  return {
    comments: Comments.find({}).fetch(),
  };
})(MyReactComponent);

到目前为止,这有效,但现在我想改进发送的评论。 commentsTo的评论字段可以是“个人资料”或“主页”。我修改了我的pub函数以获取输入:

Meteor.publish('comments', function(attachedTo) {
  return Comments.find(
    { attachedTo: attachedTo },
    { fields: { date: 1, body: 1, user: 1, attachedTo: 1, attachedToID: 1 } },
  );
});

但我无法看到如何从我的React组件中传递此参数:

export default withTracker(() => {
  let commentsSub = Meteor.subscribe('comments');
  return {
    comments: Comments.find({ attachedTo: 'group' }).fetch(),
  };
})(MyReactComponent);

2 个答案:

答案 0 :(得分:0)

我已经扩展了blueren的答案,因为我想命名参数:

export default withTracker(() => {
  let commentsSub = Meteor.subscribe('comments', { attachedTo: 'profile' });
  return {
    comments: Comments.find({}).fetch(),
  };
})(MyReactComponent);

Meteor.publish('comments', function(attachedTo) {
  return Comments.find(
    { attachedTo },
    { fields: { date: 1, body: 1, user: 1, attachedTo: 1, attachedToID: 1 } },
  );
});

答案 1 :(得分:0)

在当前的实现中,发布函数中的attachTo将是未定义的,因为您没有传递任何参数。

<强>订阅:

...
let commentsSub = Meteor.subscribe('comments','group'); // pass the value to the publish function.
...

您必须将'group'作为参数传递给发布函数。