Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.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
Mongodb 如何通过组件道具正确查询Meteor.publication集合?_Mongodb_Reactjs_Meteor - Fatal编程技术网

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

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

给定以下React组件,我将传递此组件this.ticket.props,并订阅一个名为userReservations的集合。票证属性正确呈现,即每个票证仅呈现其特定属性

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

如果我是按票证进行查询。\u id,为什么集合应用于两个票证?如何仅将预订信息呈现给相应的票证。\u 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);

好吧,这是一个非常简单的解决方案。我以前认为为了安全起见,我需要在客户端保持订阅呼叫为空,也许这是一个准确的声明,但是插入特定的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 });
          }
      });