如何自动刷新MEAN堆栈中所有导入数据的列表。 +的NodeJS的MongoDB + Openshift

我有一个表单,用户在数据库中插入产品数据。 当按下保存button时,POST方法发生。 在Post之后,GET方法被调用。 显然,这在localhost工作,但在Openshift POST执行,但列表不会自动刷新。

Server.js(GET,POST方法)

var ResourcesSchema = new mongoose.Schema({ name: String, serialnumber: String, modelno: String, description: String }); var Resources = mongoose.model("Resources", ResourcesSchema); app.get("/resources", function(req, res){ Resources.find(function(err, resources) { res.send(resources); }); }); app.post("/resources", function(req, res){ var resources = new Resources(req.body); resources.save(function(err, doc){ console.log(doc); res.json(doc); }); }); 

resources.js

 app.controller("ResCtrl", function($scope, $http) { $http.get('/resources') .success(function(response) { var resource = ""; $scope.resources = response; $scope.resource = ""; }); $scope.addResource = function() { console.log($scope.resource); $http.post('/resources', $scope.resource) .success(function(response){ $scope.resources.push(response); }); $http.get('/resources') .success(function(response) { var resource = ""; $scope.resources = response; $scope.resource = ""; }); }; }); 

find解决办法:

必须做一个名为$scope.all的函数来从数据库检索数据,我不得不从$scope.addResource函数中调用它:

 $scope.addResource = function() { console.log($scope.resource); $http.post('/resources', $scope.resource) .success(function(response){ $scope.resources.push(response); $scope.all(); }); }; $scope.all = function(){ $http.get('/resources') .success(function(response) { var resource = ""; $scope.resources = response; $scope.resource = ""; }); }; 

所以如果我做一个职位数据库, $scope.all(); 会自动刷新列表

我build议在成功POST后进行GET请求。 您可能没有更新数据,因为GET请求发生在数据保存到数据库之前(我们正在处理asynchronous行为)。

 app.controller("ResCtrl", function($scope, $http) { $http.get('/resources') .success(function(response) { var resource = ""; $scope.resources = response; $scope.resource = ""; }); $scope.addResource = function() { console.log($scope.resource); $http.post('/resources', $scope.resource) .success(function(response){ //$scope.resources.push(response); /*not sure we need this*/ // will make get call only after data saved successfully $http.get('/resources') .success(function(response) { var resource = ""; $scope.resources = response; $scope.resource = ""; }); }, function(err){console.log(err);}); }; });