i have a simple post route that looks for the post _id
.
The problem is that the pathFor
helper creates a path like this:
ObjectID("52e16453431fc2fba4b6d6a8")
I guess the mongoDB insertion as been changed and now the _id
object holds another object inside it called _str
.
Here is my route:
this.route("post", {
path: "/post/:_id",
waitOn:function(){
NProgress.start();
Meteor.subscribe("Teams");
},
before: function () {
NProgress.done();
},
data: function () {
return Posts.findOne({_id: this.params._id});
}
});
Currently, it creates an href
like :
post/ObjectID("52e16453431fc2fba4b6d6a8")
clicking on it opens a url
post/ObjectID("52e16453431fc2fba4b6d6a8")
However, I get the "NotFound" template instead of the post.
How can I fix this?
Can you try this:
Now when you go to
post/52e16453431fc2fba4b6d6a8
you should be able to see the correct post.I am actually planning on using iron-router and objectid's in my application and thinking that this pattern would work.
I have not tried it yet, but let me know if there is a problem and I'll create a small test app to work it out.
You need to change the
pathFor 'post'
to pass the hex representation of the ObjectId52e16453431fc2fba4b6d6a8
instead ofObjectId('52e16453431fc2fba4b6d6a8')
Try something like this
pathFor 'post' _id=this._id.toHexString
Once you are passing the hex string, you can use this in your router
return Posts.findOne({ _id: new Meteor.Collection.ObjectID(this.params._id)});