Могу подсказать, что, вероятнотно, вы не понимаете что такое асинхронность.
Ф-я getAllProducts должна либо принимать свой колбек, на который затем будет вброшено полученое из монги значение, либо отдавать промис, дифер которого будет резолвиться после collection = result.