【问题标题】:Node.JS Stops working and console gets flooded with dotsNode.JS 停止工作,控制台被点淹没
【发布时间】:2015-05-04 10:42:22
【问题描述】:

截屏:http://i.imgur.com/Shyihhb.png

我正在尝试编写代码以返回两个数组,但是当函数调用代码的最后一部分时,控制台会被点(屏幕截图)淹没并停止工作,就像崩溃一样。

我正在使用 MongoJS 驱动程序进行数据库连接。

这是我的代码的一部分:

lastcollect.find({from_id: usuario}, {limit: 10, sort: {time: -1}}, function(err, echoData) {
    if (err || !echoData) {
        console.log("No messages found");
    } else {
        var users = [];
        var n = 0;
        var max = echoData.length;
        echoData.forEach(function(returnData) {
            usercollect.findOne({idu: returnData.to_id}, {}, function(err, echoData) {
                if (err || !echoData) {
                    console.log("Req.Info error", err);
                    n = n + 1;
                } else {
                    n = n + 1;
                    var r = [];
                    r['name'] = echoData.name;
                    r['avatar'] = echoData.avatar;
                    r['phone'] = echoData.phone;
                    r['idu'] = echoData.idu;
                    users[echoData.idu] = r;
                    console.log('DB exec ' + n);
                    if (n === max) {
                        console.log('DB exec END');
                        var data = [];
                        data.data = echoData;
                        data.users = users;
                        console.log('users', users);
                        console.log('data', data);
                        io.sockets.emit('return lastusers ' + usuario, data);
                    }
                }
            });
    });

    }
});

我被困了 4 个小时,所以如果有人可以提供帮助,我将不胜感激。 谢谢!

【问题讨论】:

标签: javascript node.js mongodb loops foreach


【解决方案1】:

问题是你的线

users[echoData.idu] = r;

您将索引 echoData.idu 处的值设置为 r。问题是您的数组开始未初始化,我猜 echoData.idu 不是一个简单的计数。您看到的“,”是数组中的空白点!试试这个看看我的意思:

var testArray = [];
testArray[9] = "a";
console.log(testArray);

我建议改为说

users.push(r);

users[n] = r; //because n is your counter.

如果你不关心顺序,你也可以通过使用优秀的 async npm 库来加速这个调用,这里:https://github.com/caolan/async

【讨论】:

  • 谢谢!我已经很紧张了,我还没有看到这个,因为节点上的控制台有时不会显示错误。
猜你喜欢
  • 2015-11-26
  • 1970-01-01
  • 1970-01-01
  • 2015-11-10
  • 2016-08-24
  • 1970-01-01
  • 2018-03-05
  • 2020-01-20
  • 2017-01-21
相关资源
最近更新 更多