Meteor Iron:Router 获取 ID 时遇到问题

Meteor Iron:Router Problems Getting ID

有人可以解释为什么我得到的是 ObjectID 的完整值而不是干净的 ID 吗?

这是我得到的:

并且 HTML 输出:

<a href="/summary/ObjectID(%2254ab87a24c38814aa128da7b%22)">My Post</a>

我没有做任何不寻常的事情。现在非常基本的东西。第一次尝试 Meteor。

路由:lib/router.js

// Dashboard
Router.route('/dashboard', {name: 'dashboard'});

// Post detail
Router.route('/summary/:_id', {
    name: 'postSummary',
    data: function() {
        return Post.findOne(this.params._id);
    }
});

列表页面模板:templates/posts/post_dashboard.html

{{#each posts}}
    <tr>
        <td>
            <p><a href="{{pathFor 'postSummary'}}">{{title}}</a></p>
            <p><small>Created at {{createdAt}}</small></p>
        </td>
        ...
    </tr>
{{/each}}

详情页面模板:templates/posts/post_summary.html

<template name="postSummary">
    {{> postHeader}}

    <h3>{{title}}</h3>
</template>

模板助手:templates/posts/posts.js

Template.dashboard.helpers({
    posts: function () {
        return Post.find({});
    }
});

这是我安装的软件包,以备不时之需。

meteor-platform
autopublish
insecure
matthew:foundation5-sass
iron:router
jquery
useraccounts:core
useraccounts:foundation
accounts-password
accounts-facebook
accounts-google
accounts-ui-unstyled
aldeed:autoform
aldeed:collection2
forwarder:autoform-wizard
fortawesome:fontawesome

当您从控制台查询 Posts 集合时,返回文档中的 _id 是字符串文字还是 ObjectId 对象?

假设是后者,这就是发生这种情况的原因,如果是这样,可能是因为您在 Mongo [=21= 中使用 insert 填充了集合](或者从现有的 MongoDB 恢复)。默认情况下,Meteor insert 在未指定 id 时使用字符串作为自动添加的 id,而 Mongo 使用 ObjectIds。

希望对您有所帮助,但如果我完全走错了路,请告诉我!

Mongo ObjectID 有一个 属性:_str 它包括 ID 的字符串表示形式。