我正在使用matteodem:server-session存储会话变量来发布数据以填充选择表单。发布的数据无法正常工作且不具有反应性,即当会话var更改时,将显示与先前结果匹配的值。我已经尝试将它直接包装到tracker.autorun函数中,但是它没有工作(我认为这是我实施的原因)。在我出错的地方,有人可以帮助我。谢谢!
服务器端:服务器// publish.js
Tracker.autorun(function () {
Meteor.publish('locations', function() {
return Locations.find({
owner: ServerSession.get('id')
});
});
});
//客户端:这是我存储它的方式
Template.rideItem.events({
'click .rideid': function(){
var rideid = this._id;
ServerSession.set('id', rideid)
}
});
PS :如果它是初级的,请承担,我刚开始使用流星,这肯定太棒了!
答案 0 :(得分:0)
很高兴你喜欢流星。您不需要设置服务器端变量,以保持客户端和服务器之间的通信活动。您可以使用上述发布并向其发送_id
,例如:
Meteor.publish('locations', function(id) {
return Locations.find({
owner: id
});
});
在客户端上使用常规会话使您的帮助者处于反应状态并订阅Meteor.subscribe('locations', Session.get('id'));
Template.rideItem.events({
'click .rideid': function(){
var rideid = this._id;
Session.set('id', rideid)
}
});
Template.rideItem.helpers({
location: function() {
return Locations.find({owner: Session.get('id')});
}
});
答案 1 :(得分:0)
你不能让Meteor.publish在你想要的意义上被反应,只需将它包装在Tracker.autorun中即可。这是因为后者是客户端 - 端包。此外,matteodem:server-session不是反应性数据源。如果您无法在常规Session的客户端上实施自己的功能,请浏览cursor.observe和cursor.observeChanges。