简体   繁体   中英

Why my collection.find() does not work in meteor but work in robomongo?

I have a publication that should return me all users matching an _id array. here it the query:

Meteor.users.find({
            '_id': { $in: myArray}},{
                'profile.name':1,
                'profile.description':1,
                'profile.picture':1,
                'profile.website':1,
                'profile.country':1}
            );

When I run it in Robomongo (the mongo browser), it works. But my publication only returns undefined . when I console.log(myArray); in the publication, I get something like this ['FZ78Pr82JPz66Gc3p'] . This is what I paste in my working Robomongo query.

Alternative question: how can I have a better feedback(log) from the Collection.find() result?

It looks like you are trying to specify fields in your find , which you can do like this:

var options = {
  fields: {
    'profile.name': 1,
    'profile.description': 1,
    'profile.picture': 1,
    'profile.website': 1,
    'profile.country': 1
  }
};

Meteor.users.find({_id: {$in: myArray}}, options);

However, if this is being used in a publish function, I strongly recommend using only top-level fields like so:

Meteor.users.find({_id: {$in: myArray}}, {fields: {profile: 1}});

For more details on why, please see this question .


For your second question, you can view the documents returned by a cursor by calling fetch on it. For example:

console.log(Posts.find({_id: {$in: postIds}}).fetch());

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM