我有一个简单的邮寄路线,可以查找帖子_id
。
问题是pathFor
助手创建了这样的路径:
ObjectID("52e16453431fc2fba4b6d6a8")
我猜mongoDB插件已经更改,现在_id
对象在其中包含另一个名为_str
的对象。
这是我的路线:
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});
}
});
目前,它会创建一个href
,如:
post/ObjectID("52e16453431fc2fba4b6d6a8")
点击它会打开一个网址
post/ObjectID("52e16453431fc2fba4b6d6a8")
但是,我得到了“NotFound”模板而不是帖子。
我该如何解决这个问题?
答案 0 :(得分:6)
您需要更改pathFor 'post'
以传递ObjectId 52e16453431fc2fba4b6d6a8
的十六进制表示,而不是ObjectId('52e16453431fc2fba4b6d6a8')
尝试类似pathFor 'post' _id=this._id.toHexString
传递十六进制字符串后,您可以在路由器中使用它
return Posts.findOne({ _id: new Meteor.Collection.ObjectID(this.params._id)});
答案 1 :(得分:0)
你可以试试这个:
this.route("post", {
path: "/post/:stringId",
waitOn:function(){
NProgress.start();
Meteor.subscribe("Teams");
},
before: function () {
NProgress.done();
},
data: function () {
Post = Posts.findOne({_id: Meteor.ObjectId(this.params.stringId)});
}
});
现在,当你转到post/52e16453431fc2fba4b6d6a8
时,你应该可以看到正确的帖子。
我实际上计划在我的应用程序中使用iron-router和objectid,并认为这种模式可行。
我还没有尝试过,但是如果有问题请告诉我,我会创建一个小测试应用程序来解决它。