Specific params Vs Global Param in Meteor Publish?

I have Publish:

// Specific condition, but many
Meteor.publish('orders.list', () => {
    return Orders.find();
Meteor.publish('orders.byId', (_id) => {
    return Orders.find(_id);
// For all condition
Meteor.publish('orders.hello', (selector) => {
    return Orders.find(selector); // selector = {_id}, selector = {........}

Please advice, which I should use?

For most things the second option is much more convenient, so you don’t have to create a million publish functions. You should also forward the options field while you’re at it. Just keep in mind that any security restrictions you want to put in must be on the server side.

Meteor.publish('orders', (selector,options) => {
    return Orders.find(selector,options);

@herteby, thanks for your reply.
This is a good for one pub with dynamic condition.
but any examples/todos repo of Meteor don’t use this, they create many pub by difference condition.
I don’t understand???

Because you’re giving your users the possibility to do an unconstrained find on your collection.
You probably don’t want that, and validating the input is probably more complex than creating a different pub for each use case (which also gives a lot more flexibility).