styke
styke

Reputation: 2174

Meteor returns invalid hexadecimal string error trying to create ObjectID?

I'm inserting some stuff into the database and updating it elsewhere using jQuery (give me a break, I'm new), after which I need to be able to click it and display some UI stuff, which means getting the ID. So I set the ID variable and then try and and then try and use it in the click event:

...

"click .message-entry" : function (e) {
    var id = this._id || new Meteor.Collection.ObjectID(newMessageId);
    Session.set('singleMessageId', id);
},

...

Should work in principle, however I get the following error returned:

Uncaught Error: Invalid hexadecimal string for creating an ObjectID

A breakpoint reveals that the ID is both a string and the ID of the newly inserted document. What could be going wrong here?

Upvotes: 5

Views: 2377

Answers (1)

Dean Brettle
Dean Brettle

Reputation: 757

By default, Meteor doesn't use Mongo's hexadecimal object IDs. You could either tell Meteor to use Mongo style IDs by passing {idGeneration: 'MONGO'} into new MongoCollection(), or (probably more easily) just use newMessageID instead of new Mongo.ObjectID(newMessageID), if the value of newMessageID is the _id returned by insert().

Upvotes: 7

Related Questions