1 Pregunta: ¿Cómo puedo restablecer mi sesión en mi consulta para mostrar de nuevo toda la colección?

pregunta creada en Thu, Mar 28, 2019 12:00 AM

Los resultados de mis consultas de MongoDB se ven afectados por los valores de las sesiones, por ejemplo, recipientsDetails.find({ paymentStatus:{$in: Session.get('pendingFilter')} }).fetch();

Estos valores de sesiones de filtro pendientes se configuran para habilitar los resultados filtrados, por lo que solo se desean valores específicos de la colección, por ejemplo. Mostrar solo: Transacciones pagadas con éxito , transacciones fallidas o transacciones anuladas etc.

De forma predeterminada, el valor de la sesión pendingFilter está vacío, así que cuando mi página se carga por primera vez, se muestra la colección completa (sin filtro), sin embargo, después de haber usado las diversas funciones filtradas, ahora me gustaría devolver el estado predeterminado donde La colección completa no filtrada muestra, esto parece FALLO . ¿Alguien puede ayudarnos a explicar por qué esto no funciona y ofrecer una solución?

A continuación se muestra el aspecto de mi consulta MongoDB real seguida del rendimiento:

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();

La consulta de más arriba:

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"

Tengo tres funciones filtros que al hacer clic solo muestra los valores de recopilación especificados. Como se ve a continuación:

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

Esto correctamente encierra:

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" ]);
    }, 

Esto correctamente encierra:

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" ]);
    },

Esto también funciona correctamente:

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

El problema aquí es que la siguiente función .reset no funciona como se diseñó. Cuando se hace clic, la sesión pendingFilter se restablece en nula, pero no puedo ver la colección completa como se desea.

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

Los rendimientos anteriores en la consola del navegador: Testing PendingFilter:

El resultado deseado después de hacer clic en .reset es para que el cliente muestre la colección completa /sin filtrar como se ve a continuación:

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"

¿Cómo formulo mi función de restablecimiento o la consulta para habilitar el resultado deseado anteriormente?

Gracias de antemano

    
0
1 Respuestas                              1                         

No sé por qué no lo resolví antes, pero todo lo que tenía que hacer para RESET , era simplemente agregar todos los valores de matriz a la sesión como se ve a continuación:

   'click .reset' (event, instance) {
      event.preventDefault();
      Session.set('pendingFilter', [ "Pending", "Complete", "Success", "Reversed" ]);
      var testing = Session.get('pendingFilter');
      console.log("Testing PendingFilter: " +testing )
    },
    
0
2019-03-29 22: 29: 41Z
fuente colocada aquí