Tiago
Tiago

Reputation: 33

Why my nodejs requests are slow?

Im new in nodejs, and Im trying to learn by creating an app that has a list of users, that I can add and remove those users. Im using angularjs in frontend to send request to nodejs and after that to mongodb. The problem is that, if I click a lot of times in the button "adduser" a lot of times, my app goes slow. To interact to mongodb I use:

app.get('/users',function (req, res) {
         mongoose.model('Usuario').find(function (err, list) {
            res.send(list);
        });
});
app.post('/addusuario', function (req,res) {
  var usuario = new Usuario(req.body);
   usuario.save(function (err) {
      if (err) {
        console.log(err);
      } else {
        console.log('Usuario salvo com sucesso');
      }
 });  });
 app.delete('/delusuario/:id', function (req, res) {
    var id = req.params.id;
    mongoose.model('Usuario').findByIdAndRemove(id , function(err) {
        if(err) {
             console.log(err);
        } else {
            console.log('Usuario removido com sucesso!');
        }
    });
  });

Im my angularapp:

  app.controller('AppCtrl', function($scope, $http, Data) {

    function reload() {
        Data.get('users').then(function(data){
            $scope.usuarios = data;
            console.log(data);
        });
    };


    $scope.addUsuario = function(usuario) {
        Data.post('/addusuario', usuario);
        reload();
    };

 $scope.deletarUsuario = function(id) {
        Data.delete("/delusuario/"+id).then(function(result) {

        });
            reload();
    };

    reload();
});

I dont know why it is becaming slow after I click to add user more than 3 times..

Upvotes: 2

Views: 1917

Answers (1)

Alexandru Olaru
Alexandru Olaru

Reputation: 7092

What I see in your code that you are not sending an response back to the user, you should do something after insert or delete in the database. res.end();

You should rewrite your code in the following way:

app.get('/users',function (req, res) {
         mongoose.model('Usuario').find(function (err, list) {
            res.send(list);
        });
});

app.post('/addusuario', function (req,res) {
  var usuario = new Usuario(req.body);
   usuario.save(function (err) {
      if (err) {
        console.log(err);
        res.json({err: err});
      } else {
        res.json({ok: true});
        console.log('Usuario salvo com sucesso');
      }
 });  });

 app.delete('/delusuario/:id', function (req, res) {
    var id = req.params.id;
    mongoose.model('Usuario').findByIdAndRemove(id , function(err) {
        if(err) {
             console.log(err);
             res.json({err: err});

        } else {
             res.json({ok: true});
            console.log('Usuario removido com sucesso!');
        }
    });
  });

You block the stack by not returning the response to the client. And this is most probably the cause of your slow request.

Upvotes: 4

Related Questions