2017-05-10 11 views
1

次のリアクションコンポーネントがあると、このコンポーネントをthis.ticket.propsに渡しています。私はuserReservationsというコレクションに登録しています。チケットのプロパティは正しくレンダリングされます。つまり、各チケットは特定のプロパティのみをレンダリングしています。Meteor.publicationコレクションをコンポーネントのpropで正しく照会するにはどうすればよいですか?

ただし、.renderReservationInfo()メソッドの内部です。 Meteor刊行物を、UserReservationコレクションの「ticketId」値に対応するcreateContainerクラスのセレクタとしてticket._id値で作成した後、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

わかりましたので、これは簡単な解決策は十分であることが判明しました。私は以前、セキュリティ目的のためにクライアント側で私のサブスクライブコールを空に保つ必要があると思っていましたが、それは正確なステートメントですが、特定のチケットを挿入して、私が必要なものを正しい方法で返すことができました。

また、私のpublication.find()でより厳密なクエリパラメータを作成することで、返されたものを制限することができました。私はこれがおそらく私が大きなものに雪が降ったという単純な問題の例だと思う。

関連する問題