为什么我的nodejs请求很慢?

时间:2016-04-12 07:10:27

标签: node.js mongodb

我是nodejs的新手,我试图通过创建一个包含用户列表的应用来学习,我可以添加和删除这些用户。我在前端使用angularjs向nodejs发送请求,之后发送到mongodb。问题是,如果我多次在“adduser”按钮中点击很多次,我的应用程序会变慢。  为了与mongodb互动,我使用:

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!');
        }
    });
  });

我的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();
});

我不知道为什么在我点击添加用户超过3次之后它会变慢...

1 个答案:

答案 0 :(得分:3)

我在您的代码中看到您没有向用户发送回复,您应该在数据库中插入或删除后执行某些操作。 res.end();

您应该按以下方式重写代码:

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!');
        }
    });
  });

您通过不将响应返回给客户端来阻止堆栈。这很可能是你请求缓慢的原因。