Estoy creando API de back-end para un clon de Twitter. La siguiente API muestra el perfil de un usuario. Quiero mostrar los tweets de las personas que sigue este usuario. Pero en mi respuesta, la matriz de tweets devuelve una matriz vacía a pesar de que he insertado los datos en esta matriz.
¿Alguien puede ayudarme a entender por qué la matriz de tweets está vacía en la respuesta?
app.get('/api/profile', auth, function (req, res) { var email1 = req.user.email; var followers_data = []; var tweets = []; follower.find({ emailoffollowee: email1 }, (err, results) => { if (err) console.log(err); else { results.map((d, k) => { followers_data.push(d.emailoffollower); }) for (var i = 0; i < followers_data.length; i++) { Tweet.find({ author: followers_data[i] }, (err, results1) => { if (err) console.log(err); else { results1.map((d, k) => { tweets.push(d); }) } }) } res.json({ isAuth: true, id: req.user._id, email: req.user.email, name: req.user.firstname + req.user.lastname, followers: followers_data, tweet: tweets }); } }) .catch(error => { console.log(error); }) });```Tienes Tweet.find() que es una función asíncrona, para resolver el problema utilicé async/await
app.get('/api/profile', auth, function (req, res) { var email1 = req.user.email; var followers_data = []; var tweets = []; follower.find({ emailoffollowee: email1 }, async (err, results) => { if (err) console.log(err); else { results.map((d, k) => { followers_data.push(d.emailoffollower); }) for (var i = 0; i < followers_data.length; i++) { let results1 = await Tweet.find({ author: followers_data[i] }); results1.map((d, k) => { tweets.push(d); }) } res.json({ isAuth: true, id: req.user._id, email: req.user.email, name: req.user.firstname + req.user.lastname, followers: followers_data, tweet: tweets }); } }) .catch(error => { console.log(error); }) });Te recomiendo que leas este artículo async/await