如何在查询中重置会话以再次显示整个集合?

时间:2019-03-28 23:58:47

标签: meteor

我的MongoDB查询结果受会话值的影响,例如recipientsDetails.find({ paymentStatus:{$in: Session.get('pendingFilter')} }).fetch();

设置这些 pendingFilter会话值以启用过滤结果,从而仅需要集合中的特定值,例如仅显示:成功付款的交易失败的交易冲销的交易

默认情况下,pendingFilter会话值为空,因此,当我的页面第一次加载时,整个集合(未过滤的)都会显示,但是在我使用了各种过滤后的功能之后,现在想返回整个集合未过滤的默认状态,显示为失败。 有人可以帮忙解释为什么这不起作用并提供解决方案吗?

下面是我实际的MongoDB查询的样子,其后是yield:

var userIdCode = Meteor.userId(); 
var phoneNumber = Meteor.users.findOne({_id: userIdCode }, { fields: { "profile.telephoneNumber": 1 } },  {sort: {paymentDate: -1 }} ); 
var usersPhoneNumber = phoneNumber.profile.telephoneNumber; 

recipientsDetails.find({ 
                          paymentStatus:{                                                                            
                             $in: Session.get('pendingFilter')
                             },
                          recipientPaymentStatus: {
                              $in: Session.get('pendingFilter')
                             }
                        },                                                       
                        { $or: [ { payersNumber: usersPhoneNumber },                                                                 
                        { recipientNumber: usersPhoneNumber } ] }, 

                        {sort: {paymentDate: 'desc' }}).fetch();

上面的查询产量:

0:
  payersName: "Sa Acea"
  payersNumber: "+254705087633"
  paymentDate: "2019-03-28 22:38:30"
  paymentStatus: "Success"
  recipientPaymentStatus: "Reversed"
  recipientNumber: "+254705087633"
  _id: "D3gY4BoR2tvxdK4xv"
1:
  payersName: "Paul Acea"
  payersNumber: "+254705557688"
  paymentDate: "2019-03-28 22:38:30"
  paymentStatus: "Pending"
  recipientPaymentStatus: "Success"
  recipientNumber: "+254705087633"
  _id: "ajCjYbLaDP7x4iAFK"
2:
  payersName: "Simon Bolton"
  payersNumber: "+25470887633"
  paymentDate: "2019-03-28 22:38:30"
  paymentStatus: "Success"
  recipientPaymentStatus: "Complete"
  recipientNumber: "+254705087633"
  _id: "K4d6wDrjRRdSyCkhW"

我有三个过滤器函数,它们在单击时仅显示指定的集合值。如下所示:

  'click .reversedSubMenu' (event, instance) {
      event.preventDefault();
      Session.set('pendingFilter', [ "Success", "Reversed" ]);
    },

这正确地产生了:

0:
  payersName: "Sabiti Asea"
  payersNumber: "+254705087633"
  paymentDate: "2019-03-28 22:38:30"
  paymentStatus: "Success"
  recipientPaymentStatus: "Reversed"
  _id: "D3gY4BoR2tvxdK4xv"

   'click .inPescrowSubMenu' (event, instance) {
      event.preventDefault();
      Session.set('pendingFilter', [ "Success", "Pending" ]);
    }, 

这正确地产生了:

0:
  payersName: "Paul Asea"
  payersNumber: "+254705557688"
  paymentDate: "2019-03-28 22:38:30"
  paymentStatus: "Pending"
  recipientPaymentStatus: "Success"
  _id: "ajCjYbLaDP7x4iAFK"

   'click .paidSubMenu' (event, instance) {
      event.preventDefault();
      Session.set('pendingFilter', [ "Success", "Complete" ]);
    },

这也可以正确产生:

0:
  payersName: "Simon Bolton"
  payersNumber: "+25470887633"
  paymentDate: "2019-03-28 22:38:30"
  paymentStatus: "Success"
  recipientPaymentStatus: "Complete"
  _id: "K4d6wDrjRRdSyCkhW"

此处的问题是下面的.reset函数无法按设计运行。单击后,pendingFilter会话将重置为null,但是我无法根据需要查看整个集合。

   'click .reset' (event, instance) {
      event.preventDefault();
      Session.set('pendingFilter', []);
      var testing = Session.get('pendingFilter');
      console.log("Testing PendingFilter: " +testing )
    },

上面在浏览器控制台中产生:Testing PendingFilter:

单击.reset后,期望的结果是使该结果显示整个/未过滤的大学,如下所示:

0:
  payersName: "Sabiti Asea"
  payersNumber: "+254705087633"
  paymentDate: "2019-03-28 22:38:30"
  paymentStatus: "Success"
  recipientPaymentStatus: "Reversed"
  recipientNumber: "+254705087633"
  _id: "D3gY4BoR2tvxdK4xv"
1:
  payersName: "Paul Asea"
  payersNumber: "+254705557688"
  paymentDate: "2019-03-28 22:38:30"
  paymentStatus: "Pending"
  recipientPaymentStatus: "Success"
  recipientNumber: "+254705087633"
  _id: "ajCjYbLaDP7x4iAFK"
2:
  payersName: "Simon Bolton"
  payersNumber: "+25470887633"
  paymentDate: "2019-03-28 22:38:30"
  paymentStatus: "Success"
  recipientPaymentStatus: "Complete"
  recipientNumber: "+254705087633"
  _id: "K4d6wDrjRRdSyCkhW"

如何制定我的重置功能/或查询以启用上述期望的结果?

预先感谢

1 个答案:

答案 0 :(得分:0)

我不知道为什么我没有早点弄清楚这个,但是我要做的 RESET 只是将所有数组值添加到会话中,如下所示:< / p>

   'click .reset' (event, instance) {
      event.preventDefault();
      Session.set('pendingFilter', [ "Pending", "Complete", "Success", "Reversed" ]);
      var testing = Session.get('pendingFilter');
      console.log("Testing PendingFilter: " +testing )
    },