未更新客户端订阅的流星集合
我对流星和Mongo相当陌生,即使我不需要它,我也需要一些关系。未更新客户端订阅的流星集合
我有一个名为饲料和另一个名为UserFeeds在那里我有一个feedid和用户标识集合,我发布了用户这样的服务器上饲料:
Meteor.publish('feeds', function(){
return Feeds.find({_id:{$in:_.pluck(UserFeeds.find({user:this.userId}).fetch(),'feedid')}});
});
我找到UserFeeds用户,取它(返回一个数组),并将其只采用feedid字段,然后在Feeds集合中查找这些订阅源。
和客户端的订阅像这样:
Deps.autorun(function(){
Meteor.subscribe("feeds");
});
的问题是,当我添加一个新饲料和新userfeed客户端没有收到的变化,但是当我刷新页面新饲料确实出现。
任何想法,我在这里失踪?
谢谢。
试试这个...
Meteor.autosubscribe(function(){
Meteor.subscribe("feeds");
});
,并在模板JS ...
Template.templateName.feeds = function()
return Feeds.find() # or any specific call
};
在HTML
...
{{#each feeds}}
do some stuff
{{else}}
no feed
{{/each}}
嗨,这个问题是不是在客户端上,而是在服务器,客户端渲染饲料就好了,当创建一个新的进料和相关用户不会推动改变的问题客户。 – Beldar 2013-03-28 15:56:38
我觉得你的问题是, .fetch()你在这里使用...
UserFeeds.find({user:this.userId}).fetch()
...消除反应性。
.fetch()返回一个数组而不是一个游标,并且该数组不会被动。
我碰到这个。事实证明,服务器上的发布函数不会被反应性地重新运行:如果它们返回一个Collection游标,就像你正在做的那样(并且和大多数发布函数一样),那么publish函数将运行一次,Meteor将存储游标并只在光标内容改变时发送更新。这里重要的是流星将而不是重新运行发布功能,因此,Collection.find(query)
,当query
更改。如果你想让发布函数重新运行,那么到目前为止我已经完成的方式是设置发布函数来接收参数。通过这种方式,客户可以反应性地更新其收藏,可以反应性地重新订阅。该代码看起来是这样的:
// client
Meteor.subscribe('user_feeds');
Deps.autorun(function(){
var allFeeds = UserFeeds.find({user: Meteor.userId()}).fetch();
var feedIds = _.pluck(allFeeds,'feedid');
Meteor.subscribe('feeds',feedids);
});
// server
Meteor.publish('feeds',function(feedids) {
return Feeds.find({_id: {$in: feedids}});
});
相信陨石包publish-with-relations设计来解决这个问题,虽然我没有用它。
编辑:我相信发布功能将当userId更改时重新运行,这意味着您可以在发布敏感数据之前进行服务器端检查以确保用户已登录。
您可以使用reactive-publish包(我是作者之一)。它允许您创建取决于另一个查询结果的发布端点。在你的情况下,查询UserFeeds
。
Meteor.publish('feeds', function() {
this.autorun(function (computation) {
var feeds = _.pluck(UserFeeds.find({user: this.userId}, {fields: {feedid: 1}}).fetch(), 'feedid');
return Feeds.find({_id: {$in: feeds}});
});
});
的重要组成部分,是你限制UserFeeds
场只feedid
确保autorun
当UserFeeds
一些其他领域的变化,场你不关心不重新运行。
是什么面临这种情况,要解决这个问题---- http://stackoverflow.com/questions/42652958/how-to-update-data-getting-from-meteor-subscription-when-value-更新-某处 – 2017-03-10 10:26:51