Performance-wise you‘d probably be better suited to denormalize a bit more so you can replace the iteration (the for(i=0;...) part) with a single call to the database.
This would reduce the database calls from n+1 to a mere 2.
Do you mean subscribe is slower than method call? I don’t think so in this situation.
Yes it’s slower but only in milliseconds. And it takes only once. But if you use method call, in a loop. Really? Do you want to do it?
nope, once I did it, the loop is inside the method in the server side; so all the operations are in serer side; I get only the result in the client side