Because the publication is registered on the server:
//On the server
// Some MongoDB query using param
// Param is whatever you pass when you subscribe
// on the client, in your example: 3
// So you might use it to limit what the subscription returns
The client can now subscribe to a subscription called
coolThings as it has been registered on the server. The server then determines what to return to the client. It is not a random string. If you just put a random string nothing will happen because the server probably hasn’t registered a publication named that random string.
Server publications do nothing without client subscriptions to those publications.
When you call Things.find() on the client, it is not directly communicating with the DB, it’s using a MiniMongo instance that replicates the DB, but is only populated with whatever documents the subscriptions return.
So the server determines what to send to the client, and as far as the client is concerned, that’s all that exists.
I think reading the documentation would be helpful: http://docs.meteor.com/#/basic/pubsub