如何通过组件道具正确查询Meteor.publication集合?

时间:2017-05-10 21:25:01

标签: mongodb reactjs meteor

鉴于以下React组件,我传递此组件this.ticket.props并且我订阅了一个名为userReservations的集合。故障单属性正确呈现,即每个故障单仅呈现其特定属性。

但是在.renderReservationInfo()方法中。在使用ticket._id值作为createContainer类中的选择器进行Meteor.subscription调用(对应于UserReservation集合中的“ticketId”值)之后,Meteor发布使用正确的集合信息进行响应,但将其呈现给每个票证。

如果我是通过ticket._id查询,为什么这个集合适用于这两张票?如何将预订信息呈现给相应的ticket._id?

是否存在可以帮助我管理此问题的生命周期组件?

class ComponentName extends React.Component {

renderReservationInfo() {
    let {
        ticket,
        UserReservation
    } = this.props;
    return UserReservation.map((reservation) => {
        return ( 
          <div key = {reservation._id} >
            < h4 > {reservation.property1} < /h4> 
            < h4 > {reservation.property2} < /h4> 
            < h4 > {reservation.property3} < /h4> 
            <Component2 prop = {reservation} /> 
          </div >
        )
    });
  }


render() {
    return ( 
      <div >
        < div className = "make-it-pretty" >
            < h4 > Ticket Price: $ { this.props.ticket.property1 } </h4> 
            < h4 > Ticket Price: $ { this.props.ticket.property2 } </h4>
            < h4 > Ticket Price: $ { this.props.ticket.property3 } </h4>
            { this.renderReservationInfo() } 
        </div> 
      </div >
        )
      }
    }

export default createContainer(({ ticket }) => {
    Meteor.subscribe('userReservations', ticket._id);
    return {
        UserReservation: UserReservations.find({}).fetch()
    };
}, ComponentName);

我的出版物信息

//Server
Meteor.publish('userReservations', function(ticket_Id) {
      if (!ticket_Id) {
        console.log('No ticketId sent');
      } else {
        console.log('sending UserReservations', ticket_Id);
        return UserReservations.find({ ticketId:ticket_Id });
          }
      });

0 个答案:

没有答案