铁路由器:我的订阅不在waitOn内工作

时间:2014-10-01 20:34:20

标签: meteor iron-router

我在Iron Router中运行了一个简单的订阅。

@route 'AdminEditor',
  path: '/admin/editor/:id?'
  controller: 'AdminController'
  template: 'AdminRoot'
  yieldTemplates:
    'AdminEditor': { to: 'adminAside' }

  waitOn: ->
    return Meteor.subscribe 'getArticle', @params.id

出版物:

Meteor.publish 'getArticle', (id) ->
  return Articles.find { 'id': id }

我的数据库不是空的,只有一个文档:

db.articles.find().pretty()
{
  "authors" : [
    "dqbxgrxzehXXTbFgG"
  ],
  "date" : ISODate("2014-10-01T20:07:48.846Z"),
  "title" : "Meteor #5",
  "content" : "hello",
  "id" : 1,
  "_id" : "WL7ygMw2jL9WnmRYZ"
}

但是当我转到/admin/editor/1并输入我的chrome调试器Articles.findOne()时,它不会返回任何内容。我还在lib文件夹中定义了集合:

@Articles = new Meteor.Collection 'articles'  # run on both client and server

我知道可能有一件事我忘了,但订阅似乎有效:当我从chrome调试器订阅并执行查找时,它会返回该对象。

Meteor.subscribe('getArticle', 1);
Articles.findOne();

1 个答案:

答案 0 :(得分:1)

您可以在waitOn中记录@ params.id的值来检查您实际发送的内容吗?可能是您将其作为字符串而不是整数发送(就像您在控制台中一样)。如果是这样,你只需要parseInt它就可以了。