Как мне сбросить сеанс в моем запросе, чтобы снова показать всю коллекцию? - PullRequest
0 голосов
/ 29 марта 2019

На результаты моего запроса MongoDB влияют значения сеансов, например, recipientsDetails.find({ paymentStatus:{$in: Session.get('pendingFilter')} }).fetch();

Эти значения pendingFilter Sessions установлены для включения отфильтрованных результатов, при этом требуются только определенные значения из коллекции, например. Только отображение: Успешно оплаченные транзакции , неудачные транзакции или сторнированные транзакции и т. Д.

По умолчанию значение pendingFilter Session пустое, поэтому, когда моя страница загружается впервые, отображается вся коллекция (нефильтрованная), однако после того, как я использовал различные отфильтрованные функции и теперь хотел бы вернуть значение по умолчанию состояние, где отображается вся коллекция нефильтрованной, кажется, что FAIL . Может кто-нибудь помочь объяснить, почему это не работает, и предложить решение?

Ниже приведен мой фактический запрос MongoDB, за которым следует выход:

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 сбрасывается в ноль, но я не могу просмотреть всю коллекцию по желанию.

   '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 голосов
/ 30 марта 2019

Я не знаю, почему я не понял этого раньше, но все, что мне нужно было сделать для RESET , это просто добавить все значения массива в сеанс, как показано ниже:

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