【问题标题】:Meteor drop collection after every query每次查询后收集流星
【发布时间】:2015-12-04 19:14:10
【问题描述】:

我正在编写一个与 API 通信并将响应存储在 Meteor 集合中的应用程序,以便我可以使用 mongo 进行排序/过滤。

我想清除每个新结果集的集合。但是 Meteor Collection 是持久的。

清除收藏的首选方式是什么?我知道你可以放弃流星集合,但这是首选方法吗?

帮助表示赞赏。谢谢!

【问题讨论】:

    标签: meteor


    【解决方案1】:

    我将着手创建一个仅在客户端可用的本地 mongo 集合。要创建客户端集合,请不要给它一个名称参数。

    //This collection is client-only, and will not be sync with server
       myCollection = new Mongo.Collection();
    
    
    //To be more explicit, you can use `null` for the name:
      myCollection = new Mongo.Collection(null);
    

    使用完数据后清空集合

    myCollection.remove({});
    

    【讨论】:

    • 甚至不需要remove;每次只创建一个新集合,旧集合将被垃圾收集。
    【解决方案2】:

    myCollection.remove({}) 是从集合中删除所有文档的语法。这仅适用于服务器,除非集合是按照@Nakib 示例的客户端集合。否则只能在客户端_id 删除文档。通常,您的允许/拒绝规则应该阻止任何删除客户端上任何内容的尝试,因为它提供了一个很好的攻击向量。

    【讨论】:

      【解决方案3】:

      不完全熟悉 Meteor 最佳实践,但如果您要在 javascript 中清除数组,最佳实践是运行以下命令。

      myArrary.length = 0;

      如需更多信息,我推荐blog post by David Walsh,他详细说明了将数组归零的原因如下:

      将长度设置为零会清空现有数组,而不是 创建另一个数组!这可以帮助您避免指针问题 数组也是如此。

      【讨论】:

      • 更多的是 Mongo,而不是 Meteor。而对于 Mongo,将集合的长度设置为 0 将不起作用。
      • 感谢您的澄清,现在我发现我的回答离题了。
      猜你喜欢
      • 2015-07-22
      • 2018-06-22
      • 1970-01-01
      • 1970-01-01
      • 2013-06-30
      • 1970-01-01
      • 1970-01-01
      • 2017-05-23
      • 2017-11-05
      相关资源
      最近更新 更多