首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何发布一个数据,然后停止对它的反应?

我如何发布一个数据,然后停止对它的反应?
EN

Stack Overflow用户
提问于 2015-09-26 20:07:48
回答 1查看 36关注 0票数 1

我想创建一个主页,发布几条数据,但只有当用户第一次访问该页面时,才会发布:一篇最新的10篇文章会发表,但仅此而已--它不会一直在改变。

是否有一种方法可以使内置的pub/sub机制在一定时间或数量的记录或其他机制之后自动关闭?

现在,我正在使用一个非常简单的设置,它不会“关闭”:

代码语言:javascript
复制
latestNews = new Mongo.Collection('latestNews');

if (Meteor.isClient) {
  Meteor.subscribe("latestNews");
}
if (Meteor.isServer) {
  Meteor.publish('latestNews', function() {
    return latestNews.find({}, {sort: { createdAt: -1 }, limit : 10});
  });
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-26 21:15:29

在Meteor中实现的pub/sub模式都是关于反应性数据更新的。在您的情况下,这意味着如果文章的作者或最后更新日期更改,用户将立即在其主页上看到此更改。

但是,您希望只发送一次数据,而不希望再次更新数据。

Meteor有一个内置的功能来处理这个场景:方法。方法是客户端告诉服务器执行计算和/或发送纯非反应性数据的一种方法。

代码语言:javascript
复制
//Server code
var lastTenArticlesOptions = {
  sort : { 
    createdAt : -1
  },
  limit : 10
}

Meteor.methods({
  'retrieve last ten articles' : function() {
    return latestNews.find({}, lastTenArticlesOptions).fetch()
  }
})

注意,与出版物相反,我们不发送Mongo.Cursor!在发布中使用游标作为一种方便(也称为魔术)的方式来告诉服务器要发送哪些数据。

在这里,我们通过对光标的fetch直接发送数据--数据,以获得一组文章,然后这些文章将自动被简易爆炸装置发送到客户端。

如果您需要向客户端发送反应性数据,并在稍后的某个时间点停止推送更新,那么您最好的选择是暂时依赖于pub/sub,然后手动地stop 出版 (服务器端)或订阅 (客户端):

代码语言:javascript
复制
Meteor.publish('last ten articles', function() {
  return latestNews.find({}, lastTenArticlesOptions)
})
代码语言:javascript
复制
var subscription = Meteor.subscribe('last ten articles')
//Later...
subscription.stop()

在服务器端,您将存储发布句柄(this),然后对其进行操作。

停止订阅或发布不会破坏已经发送的文档(用户不会看到最后十篇文章突然消失)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32801498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档