流星铁:获取ID的路由器问题

时间:2015-01-06 08:37:27

标签: meteor iron-router

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

这就是我得到的:

enter image description here

HTML输出:

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

我没有做任何与众不同的事情。现在非常基本的东西。只是第一次尝试流星。

路由: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

2 个答案:

答案 0 :(得分:5)

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

假设它是后者,那就是为什么会发生这种情况,如果是这样,那可能是因为你已经使用{{1}填充了这个集合在Mongo shell中(或者从现有的MongoDB中恢复)。默认情况下,Meteor插入在未指定id时使用字符串作为自动添加的id,而Mongo使用ObjectIds。

希望有所帮助,但如果我走错了轨道,请告诉我!

答案 1 :(得分:0)

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