Meteor – collection.find () siempre devuelve todos los campos

Me encontré con este (problema ligeramente molesto) estoy tratando de buscar todos los registros en una colección y no mostrar (o mostrar) un campo específico (puntaje). Esto es solo un ejemplo y no refleja mi código real, pero el problema siempre es reproducible. Los campos que excluyo son muy grandes y solo bash generar un menú de registros disponibles.

Comandos como

players.find({},{score:1}) players.find({},{score:0}) 

Siempre devuelva todos los campos, en lugar de desencadenar la exclusión / inclusión en mongodb. ¿No me preocupa nada, ya que la plantilla puede controlar qué datos se procesan en html? Todavía parece que los datos se transfieren al lado del cliente independientemente; y aparece en la consola.

tu syntax está un poco desfasada, debería ser

 CollectionName.find({}, {fields: {'onlyThisField':1}}); 

o

 CollectionName.find({}, {fields: {'everythingButThisField':0}}); 

su plantilla sí controla qué datos se muestran, pero todavía hay muchos escenarios donde la limitación de campos tiene sentido; la privacidad de los datos o la eficiencia (algunos campos de todos los registros, todos los campos del registro ‘actual’) son dos comunes

no lo mencionó, pero esto normalmente está dentro de una función de publicación – vea http://docs.meteor.com/#meteor_publish – el modificador de fields también está disponible en el cliente, pero allí no limita los datos enviados al cliente, solo para la plantilla: la reducción / selección del campo del lado del servidor tiene diferentes beneficios

Verifique también que haya eliminado el paquete autopublish , sin embargo, debería ver una advertencia si tiene ese activo y escribir sus propias funciones de publicación, que es donde comúnmente usaría los fields

Primero, si desea controlar algunos campos en Collection.find() , puede intentar hacerlo de esta manera:

 CollectionName.find({}, {fields: {field:1}}); 

pero estaba trabajando solo en el servidor.

O prueba esto:

En el servidor:

 Meteor.publish("myCollection", function () { return SvseTree.find({},{fields: {field:1}}); }); 

En el cliente:

 Meteor.subscribe("myCollection"); 

luego ejecuta meteor remove autopublish .

En segundo lugar, si quiere obtener Array of Collection.find (), intente hacerlo: Collection.find (). Fetch ();