【问题标题】:Meteor : passing router parameter to get Collection data without resultsMeteor:传递路由器参数以获取没有结果的集合数据
【发布时间】:2015-07-24 18:18:33
【问题描述】:

我对流星还很陌生,在尝试使用 Iron Router 将 url 参数传递给 Collection 并检索一些数据以进行显示时遇到了问题。

具体来说,我有一个包含事件的集合,我想要一个更详细地显示单个事件的页面。

PS:我已经成功地将 Iron Router 和 Meteor 的发布/订阅逻辑用于其他任务,例如显示所有事件、创建它们并将它们保存到个人列表中。


event.html

<template name="event">
  <div class="page-header">
    <h1>{{title}}</h1>
  </div>
  <div class="container">
    <p>{{content}}</p>
  </div>
</template>

router.js

this.route('event',{
    path: '/event/:_id',
    waitOn: function () {
        return Meteor.subscribe('Events');
    },
    data: function () {
        return Events.findOne(this.params._id);
    }
});

发布发生在服务器上的 publish.js 中,订阅发生在路由器中
publish.js

Meteor.publish('Events', function () {
    return Events.find();
});

router.js

Router.configure({

    (..)

    waitOn: function() {
        return [
          Meteor.subscribe('Events'),
          Meteor.subscribe('myEvents')
        ];
    }
});

我一直在看 Manuel Schoebel link 的本教程

在集合查找发生之前一切都很好。当我从集合中记录结果数据时,它是undefined

data: function () {
    var event = Events.findOne(this.params._id);
    console.log(event);
    return event;
}

【问题讨论】:

  • 尝试将此var event = Events.findOne(this.params._id); 更改为var event = Events.findOne({_id: eventId}); //where var eventId = this.params._id 并返回{event: event}
  • console.log(this.params._id) 给你什么?
  • Events.findOne({_id: ObjectId(this.params._id)});
  • 太傻了,我把:放在了不应该放在的地方。代码现在功能齐全:) 谢谢大家的帮助!

标签: mongodb meteor iron-router mongo-collection


【解决方案1】:

错误地,我将: 放在了不应该放在的位置。
结束问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-06
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    • 2015-04-11
    相关资源
    最近更新 更多