在达到一定数量后清空Meteor数据库/集合

Empty out a Meteor database/collection after a certain number?

本文关键字:Meteor 清空 数据库 集合      更新时间:2023-09-26

我可以说我是JS的新手,但掌握了一切是如何工作的-但我最近尝试跳入meteor,它似乎只是削减了大部分的代码快捷方式,我有困难的理解。

我试图清空流星数据库的前半部分,一旦它达到一定数量的项目,在本例中为100。我只有:

var printOut = MongoDatabase.find().count(); 
if (printOut > 100) {
    //delete first 50 entries of the 100 items
}

提前感谢

首先为CreationDate找到一个截止值,然后删除该日期之前的所有值:

if (MongoDatabase.find().count() > 100){
  cutoff = MongoDatabase.find({}, {fields: {CreationDate: 1, _id: 0}, sort: {CreationDate: -1 }, limit: 50}).fetch().pop().CreationDate
  MongoDatabase.remove({CreationDate: {$lt: cutoff}})
}

这将在服务器上工作,但如果您尝试直接在客户端上执行此操作,您将得到以下错误:

"Not permitted. Untrusted code may only remove documents by ID. [403]"

所以如果你需要从客户端触发这个,使用一个流星。方法是最好的方法。