我有以下代码
followDB.find({user: username}, function(err, docs){
if(err){console.log(err)}else {
for (var i = 0; i < docs.length; i++) {
postsDB.find({ user: docs[i].follow }, function (err, docs) {
if(err){console.log(err)}
else{
for (var i = 0; i < docs.length; i++) {
var array = []
var post = {
user: docs[i].user,
text: docs[i].text,
time: docs[i].time,
likes: docs[i].like,
id: docs[i]._id
}
array.push(post)
console.log(array.length);
//socket.emit('Order Posts', user, text, time, likes, id)
}
}
});
}
}
})
由于某种原因 array.length 总是等于 1,我不知道为什么。数组内的对象始终是最后提交的对象。
感谢您的支持。
最佳答案
您将在每次迭代时重新创建数组。
在 for 循环之外、之前而不是内部初始化它。
关于Javascript数组只保存最近的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36903843/