2016-04-12 3 views
2

Im new in nodejs, и я пытаюсь научиться, создав приложение, имеющее список пользователей, которое я могу добавить и удалить этих пользователей. Im использует angularjs в frontend для отправки запроса nodejs и после этого mongodb. Проблема в том, что если я много раз нажимаю кнопку «adduser», мое приложение идет медленно. Для взаимодействия с MongoDB я использую:Почему мои запросы nodejs медленны?

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 мой 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(); 
}); 

Я не знаю, почему это becaming медленно после того как я нажмите, чтобы добавить пользователю более чем в 3 раза ..

+0

Отсутствует служба данных/заводская установка. Проверьте, не увеличивается ли память браузера, проверьте брандмауэр и антивирус. Попробуйте приложение прямо с сервера браузера – Max

+0

Что означает «попробовать приложение прямо с сервера браузера»? – Tiago

+0

Если у вас есть приложение на узле, запущенном на другом компьютере, попробуйте перейти к приложению с этого аппарата – Max

ответ

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

Вы блокировать стек, не возвращая клиенту ответ. И это, скорее всего, причина вашего медленного запроса.

+1

Спасибо! Теперь он работает отлично: D Я не знал, что – Tiago

Смежные вопросы