Mongodb 如何通过组件道具正确查询Meteor.publication集合?
给定以下React组件,我将传递此组件this.ticket.props,并订阅一个名为userReservations的集合。票证属性正确呈现,即每个票证仅呈现其特定属性 但是在.renderServationInfo()方法中。在我使用ticket.u id值作为createContainer类中的选择器调用Meteor.subscription之后,它对应于UserReservation集合中的“ticketId”值,Meteor发布使用正确的集合信息进行响应,但会将其呈现给每个ticket 如果我是按票证进行查询。\u id,为什么集合应用于两个票证?如何仅将预订信息呈现给相应的票证。\u id 是否有生命周期组件可以帮助我管理此问题Mongodb 如何通过组件道具正确查询Meteor.publication集合?,mongodb,reactjs,meteor,Mongodb,Reactjs,Meteor,给定以下React组件,我将传递此组件this.ticket.props,并订阅一个名为userReservations的集合。票证属性正确呈现,即每个票证仅呈现其特定属性 但是在.renderServationInfo()方法中。在我使用ticket.u id值作为createContainer类中的选择器调用Meteor.subscription之后,它对应于UserReservation集合中的“ticketId”值,Meteor发布使用正确的集合信息进行响应,但会将其呈现给每个ticke
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);
好吧,这是一个非常简单的解决方案。我以前认为为了安全起见,我需要在客户端保持订阅呼叫为空,也许这是一个准确的声明,但是插入特定的ticketId,我就能够开始以正确的方式返回我需要的内容
另外,通过在我的publication.find()中设置更严格的查询参数,我能够限制返回的内容。我想这可能是一个简单问题的一个例子,我把它变成了一个更大的问题。好的,所以这是一个足够简单的解决方案。我以前认为为了安全起见,我需要在客户端保持订阅呼叫为空,也许这是一个准确的声明,但是插入特定的ticketId,我就能够开始以正确的方式返回我需要的内容 另外,通过在我的publication.find()中设置更严格的查询参数,我能够限制返回的内容。我想这可能是一个简单问题的一个例子,我把它变成了一个更大的问题
//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 });
}
});