了解新的mongo id并将其与铁路由器一起使用

Boa*_*och 4 mongodb meteor iron-router

我有一个寻找帖子的简单邮政路线_id.问题是pathFor助手创建了这样的路径:

ObjectID("52e16453431fc2fba4b6d6a8")
Run Code Online (Sandbox Code Playgroud)

我猜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});
        }
    });
Run Code Online (Sandbox Code Playgroud)

目前,它创建了一个href像:

 post/ObjectID("52e16453431fc2fba4b6d6a8")
Run Code Online (Sandbox Code Playgroud)

点击它打开一个网址

post/ObjectID("52e16453431fc2fba4b6d6a8") 
Run Code Online (Sandbox Code Playgroud)

但是,我得到了"NotFound"模板而不是帖子.

我怎样才能解决这个问题?

mph*_*uie 6

您需要更改pathFor 'post'以传递ObjectId的十六进制表示52e16453431fc2fba4b6d6a8而不是ObjectId('52e16453431fc2fba4b6d6a8')

尝试这样的事情 pathFor 'post' _id=this._id.toHexString

传递十六进制字符串后,您可以在路由器中使用它

return Posts.findOne({ _id: new Meteor.Collection.ObjectID(this.params._id)});