即使在将元素推送到它之后,响应中的数组还是空的
Array is empty in the response even after pushing elements to it
我正在为 Twitter 克隆创建后端 API。下面的 API 显示了用户的个人资料。我想显示该用户关注的人的推文。但在我的回复中,tweets 数组返回一个空数组,即使我已将数据推入此数组。
谁能帮我理解为什么响应中的 tweets 数组为空?
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);
})
});```
你有 Tweet.find()
这是一个异步函数,为了解决我使用 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);
})
});
我推荐你阅读这篇文章async/await
我正在为 Twitter 克隆创建后端 API。下面的 API 显示了用户的个人资料。我想显示该用户关注的人的推文。但在我的回复中,tweets 数组返回一个空数组,即使我已将数据推入此数组。
谁能帮我理解为什么响应中的 tweets 数组为空?
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);
})
});```
你有 Tweet.find()
这是一个异步函数,为了解决我使用 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);
})
});
我推荐你阅读这篇文章async/await