Meteor - collection.find() always returns all fields

后端 未结 2 1154
一向
一向 2020-12-02 19:55

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

相关标签:
2条回答
  • 2020-12-02 20:20

    First, if you want to control some fields in Collection.find(),you can try to do it this way:

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

    but it was working only on the server.

    Or try this:

    On the server:

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

    On the client:

    Meteor.subscribe("myCollection");
    

    then run meteor remove autopublish.

    Second, if you want to get Array of Collection.find(), try to do it: Collection.find().fetch();

    0 讨论(0)
  • 2020-12-02 20:24

    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

    0 讨论(0)
提交回复
热议问题