0

I have a template named qa and inside it I am using a helper named question, which will get the text field of my document, based on the _id property.

Template.qa.helpers({
    question: function () {
        return Questions.find({_id: 24}).fetch()[0].text;
    }
});

This works fine for all _id values unless I use _id: 0, then nothing is returned. I run db.questions.find({_id: 0}) on the minimongo console, and it does return a document.

{ "_id" : 0, "author" : 0, "create" : "2014-12-22T13:26:23.038Z", "liked" : [ ], "range" : "", "text" : "I want to get this text", "update" : "2014-12-22T13:26:23.038Z", "version" : 1 }

Can I not use _id: 0 in collection.find() for Meteor?

Clarification: I do not want to return all fields except _id, I want to find/select based on the _id value. But it does not work if the _id is 0.

dayuloli
  • 16,205
  • 16
  • 71
  • 126
  • Did you try `var intId = parseInt(0); return Questions.find({_id: intId})` so that you actually pass an integer value instead of a falsy one? – Serkan Durusoy Dec 27 '14 at 17:10

1 Answers1

1

I think you want to avoid falsy _id values. Meteor replaces a falsy _id with a random number to prevent it ever going to the database. The comments on the code explain it:

// protect against dangerous selectors.  falsey and {_id: falsey} are both
// likely programmer error, and not what you want, particularly for destructive
// operations.  JS regexps don't serialize over DDP but can be trivially
// replaced by $regex.
user728291
  • 4,138
  • 1
  • 23
  • 26