Javascript数组只保存最近的对象

标签 javascript arrays node.js mongodb

我有以下代码

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/

相关文章:

javascript - 如何在angularjs中创建项目具有不同 Controller 的列表

javascript - PHP 未定义偏移量 2

mysql - 如何从 sails Rest 服务中的 mysql 数据库获取结果

java - 找到最大最频繁元素

python - 在 python 中搜索二维数组 - 最佳方法+缩进错误

angularjs - 将模块 "angular-hotkeys"添加到我的 mean.js 应用程序

node.js - 使用 async/await 逐一读取文件

Javascript Appear() 函数不运行,而 Hide() 运行

javascript - 在 javascript 中制作自定义确认框

javascript - JavaScript 中的简单异步函数