Meteor

How to Remove All Elements from a Meteor Collection

Meteor collections have a remove() method. For example, on a Post collection, you can call

Post.remove("3WRHexCGhZdSa3H9L") // remove a post with that mongo '_id' 

Post.remove({title:"How to Blog"}) // remove a post with that title

Post.remove({}) // remove every post

The catch is that you’re not allowed to call Post.remove({}) from the console. You’ll see

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

You’re also not allowed to call remove({}) from any client side code. If your app accumulates a bunch of crufty data while you’re prototyping, you might be sad about this. Client side code and the console fall under the concept “Untrusted Code” introduced by Meteor in 0.5.8.

Starting in 0.5.8, client-only code such as event handlers may only update or remove a single document at a time, specified by _id.“ More…

"Trusted Code” includes the server code and method code. The key to the solution is that you can call methods defined on the Meteor server from the client using the Meteor.call method. Therefore, this will work in the console

Meteor.call('removeAllPosts')

Assuming you define removeAllPosts on the server like so

if (Meteor.isServer) {

  Meteor.startup(function() {

    return Meteor.methods({

      removeAllPosts: function() {

        return Posts.remove({});

      }

    });

  });

}
Gaslight icon code checkup

Code Checkup

Software hit a roadblock? Find out where your code base really stands with an in-depth code checkup.

Learn More