Ran into this (slightly annoying problem) I'm trying to look up all records in a collection and not show (or show) a specific field (score). This is just an example and not reflective of my actual code, but the problem is always reproducible. The fields I am excluding are very large and I'm merely trying to generate a menu of available records.
Commands like
players.find({},{score:1}) players.find({},{score:0})
Always return every field, instead of triggering the exclude/include in mongodb. Am I worried about nothing, since the template potentially can control what data gets rendered to html? Still feels like the data is transferred to the client side regardless; and shows up in the console.
your syntax is off a bit, it should be
CollectionName.find({}, {fields: {'onlyThisField':1}});
or
CollectionName.find({}, {fields: {'everythingButThisField':0}});
your template does indeed control what data is displayed, but there are still many scenarios where field limiting makes sense - privacy of data or efficiency (some fields of all records, all fields of the 'current' record) are two common ones
you didnt mention it, but this usually is within a publish function - see http://docs.meteor.com/#meteor_publish - the fields
modifier is also available on the client, but there it does not limit data sent down to client, just to the template - server side field reduction/selection has different benefits
--
double check that you've removed the autopublish
package too, however you should see a warning if you have that active and write your own publish functions, which is where you would most commonly use fields
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With