我在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();
答案 0 :(得分:1)
您可以在waitOn中记录@ params.id的值来检查您实际发送的内容吗?可能是您将其作为字符串而不是整数发送(就像您在控制台中一样)。如果是这样,你只需要parseInt
它就可以了。