是时候和Meteor.Collection一起生活了

时间:2013-08-17 15:07:32

标签: meteor

Meteor Collection是否提供了使用mongodb的TTL(生存时间)功能的方法?需要这个用于一种带有临时数据的多用户会话。改变是完全被动的并不重要。

1 个答案:

答案 0 :(得分:0)

这个答案的两个部分:

1)应用索引你可以在Meteor中使用_ensureIndex方法,但正如_建议的那样,可以随时提取对此的支持。在可以传递的内容方面也存在限制,但对于像

这样简单的事情
db.log.events.ensureIndex( { "status": 1 }, { expireAfterSeconds: 3600 } )

..然后是mongo-livedata的标准实现

self._collection._ensureIndex(index, options);

......应该足够了。

2)我没有测试过,但我相信TTL会起作用。 (另一方面,我测试了上限集合,他们确实工作)。你知道,DDP在获取数据变化方面做了两件事:

  • 它在知道流星驱动的每次写入操作之后轮询mongo
  • 无论如何,它每10秒轮询一次mongo(对于带外更新)

这是第二部分意味着您可以手动进入mongo shell,删除/添加/更新内容,并且更改将在不迟于10秒之后反映出来。

在此基础上,如果您对10秒的反应延迟感到满意,那么TTL应该可行。

如果您对此不满意,可以试试Arunoda的智能系列,您可以阅读以下内容:http://meteorhacks.com/introducing-smart-collections.html。他们从oplog中读取(如果有的话),这样可以减少反应的延迟。请注意,这个概念虽然很有趣,但却存在David Glasser在此帖中所涵盖的限制:https://groups.google.com/d/msg/meteor-talk/h-ulU7guh1Y/nTfJ1F8uGxwJ

无论如何,祝你好运,让我们知道你是怎么过的。