5次调用后Ajax获取请求未获得响应

时间:2019-04-23 19:38:15

标签: javascript node.js ajax mongodb

我正在尝试使用ajax get请求从mongodb服务器到前端获取一些信息。一切正常,除了如果我尝试调用5次javascript函数,我没有从本地服务器收到任何响应。

我尝试放置一些console.log()以便在nodejs函数中进行调试,看来我第六次调用该函数时,nodejs函数甚至无法运行。

javascript ajax前端代码:


function addLike(music){

     var request = new XMLHttpRequest();

     request.open('POST', '/AddLike', true);
     request.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
     var myobj = {"music": music};
     request.send(JSON.stringify(myobj));

     setTimeout(function(){

        $.ajax({
          url: "/getAll",
          type: 'GET',
          dataType: 'json', // added data type
          success: function(res) {
            // => the 6th time i launch addLike(music), the function doesn't go there
             update(res);
          }
    });

     }, 200);

} 

nodejs函数:


app.get("/getAll", function(req, res){

    var MongoClient = require('mongodb').MongoClient;
    var url = "mongodb://localhost:27017/";

    MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
        if (err) throw err;

        var dbo = db.db("SoundShare");

        var tab = dbo.collection('Musique');

        tab.find({}).toArray(function(err2, result) { 
            if (err2) throw err2;

            res.send(JSON.stringify(result));

            db.close();

        });
    });
});

如下图所示,在firefox控制台中,最后一个get ajax请求未收到任何响应。

Valid XHTMLValid XHTML

似乎这是服务器端的问题,但我不知道如何解决。

预先感谢您的回答。

1 个答案:

答案 0 :(得分:3)

您的问题是,您正在/ getAll函数中创建一个新连接,默认池大小为5,如docs所示。

您应该在node.js应用程序启动时创建连接,并在整个应用程序中使用该连接,而不是在每个请求上创建一个新连接。