Il secondo modo è corretto (potrebbe essere migliorato eseguendo entrambi in parallelo) suppongo che il problema sia in un altro posto. Non so quale framework stai usando ma immagino il campo _id
proviene da mongoDB ed è un ObjectId
e sembra che il decoded.id possa essere un objectId mentre quello che proviene dalla richiesta è ovviamente solo una stringa. Quindi immagino che sia vuoto perché non trova alcun utente con quella stringa.
Prova a renderlo un objectId da quella stringa (riferendosi a req.params.user_id
nella seconda query)