Il primo:
const courses = await Course.find().populate("userId")
opera sulla classe del modello... trova e popola quei campi. Nessun execPopulateNeeded.
Il secondo:
const user = await User.findById("323223ad");
const user = await user
.populate('cart.items.courseId')
.execPopulate()
Funziona su un'istanza di una classe (su un'istanza di record MongoDB).
Devi specificare quando eseguire populate()
... puoi concatenare molti populate()
s.