所以我想创建一个用户个人资料,列出用户发布的帖子。我的问题是将每个用户名通过路由器并传递到Meteor.publish / subscribe。我一直在"用户名未定义"
我想我的问题是:Iron Router如何知道" this.params.username"是?网址应该提供吗?
路由器
Router.route('userProfile',{
path: '/:username',
waitOn: function () {
return Meteor.subscribe('userprofile', this.params.username)},
data: function () {return {posts:Posts.find({username: this.params.username})};},
});
Meteor.publish
Meteor.publish('userprofile', function () {
return Posts.find({username: this.params.username});
});
模板
<template name="userProfile">
<div class="posts">
{{#each posts}}
{{> postItem}}
{{/each}}
</div>
</template>
答案 0 :(得分:0)
您的路由代码是正确的,如果console.log
waitOn
或data
内的用户名Router.route('userProfile', {
path: '/:username',
waitOn: function () {
console.log('waitOn', this.params.username);
return Meteor.subscribe('userprofile', this.params.username);
},
data: function () {
console.log('data', this.params.username);
return {
posts: Posts.find({username: this.params.username})
};
}
});
,您应该获得正确的值。
Meteor.publish('userprofile', function (username) {
return Posts.find({username: username});
});
但是,在发布函数中获取参数的方式是错误的,您应该像这样重写您的出版物:
Meteor.subscribe
在发布名称之后发送给{{1}}的参数作为参数传递给发布函数。