Jea*_*eri 2 javascript meteor iron-router
我有一个情况,使用以下代码最好地描述:
Meteor.publish('users', function (name) {
return Users.find({name: name});
});
Meteor.publish('posts', function (userId) {
return Posts.find({userId: userId}, {sort: {insertDate: 1}});
});
Run Code Online (Sandbox Code Playgroud)
用户有很多帖子.所以,当网址是
http://example.com/john
Run Code Online (Sandbox Code Playgroud)
因此,要查找特定用户的帖子,我需要知道用户的ID.
现在我有以下控制器:
UserController = RouteController.extend({
onBeforeAction: function () {},
waitOn: function () {
var userSub = Meteor.subscribe('user', this.params.name);
return [userSub];
},
data: function () { ... },
action: function () {
if (this.ready()) {
this.render('user');
}
else {
;//this.render('loading');
}
}
});
Run Code Online (Sandbox Code Playgroud)
现在我只能waitOn是用户,但我也想等待帖子,但我怎么能这样做,因为订阅帖子我需要知道userId:
Meteor.subscribe('posts', user._id);
Run Code Online (Sandbox Code Playgroud)
有什么建议 ?
现在加入流星很棘手.在这篇文章中可以找到很多好的信息.对于简单的反应连接,您通常可以直接在路径中执行它们(在"加入客户端"部分中进行了解释).以下是您的用户/帖子加入的示例:
UserController = RouteController.extend({
waitOn: function() {
Meteor.subscribe('user', this.params.name);
},
data: function() {
return Users.findOne({name: this.params.name});
},
onBeforeAction: function() {
if (this.data()) {
var userId = this.data()._id;
this.subscribe('posts', userId).wait();
}
}
});
Run Code Online (Sandbox Code Playgroud)
如上面的评论所述,如果您正在寻找非反应性加入,您可以在此处查看我的答案.对于服务器上的反应性连接,我建议这个问题.
| 归档时间: |
|
| 查看次数: |
3473 次 |
| 最近记录: |