En el siguiente código, quiero reemplazar la clave de nombre con un valor que se pasa a través de un parámetro this.params.sortby pero no puedo hacerlo funcionar. Buscando ayuda

Así que si:

this.params.sortby=location

Quiero esto:

Template.MyTemplate.helpers({
    data: function () {
      return MyCollection.find({},{sort:{name: 1 }});
    }
  });

Para convertirse en esto:

Template.MyTemplate.helpers({
    data: function () {
      return MyCollection.find({},{sort:{location: 1 }});
    }
  });
1
Irven 4 sep. 2014 a las 05:49

2 respuestas

La mejor respuesta

Puede usar un objeto con la notación de paréntesis para lograr el nombre dinámico de la clave, como este:

var sorter={};
sorter[this.params.sortby]=1;

Suponiendo que this.params.sortby es igual a la String "edad", tendría el siguiente objeto sorter:

var sorter={
  age:1
};

Luego puede usar para ordenar su colección de manera apropiada:

MyCollection.find({},{sort:sorter});
2
saimeunt 4 sep. 2014 a las 02:02

Cree un generador de fábrica SORT para generar criterios de clasificación antes de la consulta.

0
Paris Tao 4 sep. 2014 a las 02:05