2017-11-01 1 views
-1

Wenn ich Daten an MongoDB sende, gibt angular unshift keyword diesen Fehler aus. Ich weiß nicht viel über Angular. Warum gibt es mir diesen Fehler?Angular Unshift Fehler beim Übermitteln von Daten an mongodb

TypeError: Cannot read property 'unshift' of undefined 

Hier ist mein Code, der diesen Fehler gibt:

var app=angular.module('app',[]); 
app.controller('PostsCtrl', function($scope, $http){ 
    $http.get('/api/posts') 
    .then(function(response) { 
     $scope.posts = response.post; 

     alert(JSON.stringify(response)); 
    }); 



$scope.addPost=function(){ 
    if($scope.postBody){ 
    $http.post('/api/posts',{ 
     username:'Tahir', 
     body:$scope.postBody 
    }).then(function successCallback(response) { 
      $scope.posts.unshift(post) 
      $scope.postBody=null 

      alert(JSON.stringify(response)); 
      }, function errorCallback(response) { 
      // called asynchronously if an error occurs 
      // or server returns response with an error status. 
     }) 


     } 
    } 

} 
+0

Sie diesen Fehler bekam für diesen Code '$ scope.posts.unshift (post)' wegen '$ scope.posts' ist' undefined', so dass Sie überprüfen ' $ scope.posts' ist 'undefiniert' oder nicht oder Sie sollten zuerst definieren wie' $ scope.posts = [] ' –

Antwort

0

Sie diesen Fehler bekam für diesen Code $scope.posts.unshift(post) wegen $scope.postsundefined ist so sollten Sie zuerst $scope.posts definieren.

können versuchen, dieses

var app=angular.module('app',[]); 
app.controller('PostsCtrl', function($scope, $http){ 
    $scope.posts = []; 
    $http.get('/api/posts') 
    .then(function(response) { 
     // if response.post is single post then should push on posts 
     // $scope.posts.push(response.post); 
     // if got array then 
     $scope.posts = response.post ? response.post : []; 

     alert(JSON.stringify(response)); 
    }); 



$scope.addPost=function(){ 
    if($scope.postBody){ 
    $http.post('/api/posts',{ 
     username:'Tahir', 
     body:$scope.postBody 
    }).then(function successCallback(response) { 
      $scope.posts.unshift(post) 
      $scope.postBody=null 
      }, function errorCallback(response) { 
     }) 
     } 
    } 
} 
+0

Sie sind Genie :) Problem gelöst –

0

Die $scope.posts ist nicht definiert. Sie können es lösen wie diese

$scope.posts = $scope.posts || []; 
$scope.posts.unshift(post); 

die erste Zeile überprüft zuweisen leeres Array, wenn die posts null ist

+0

Danke für Ihre Hilfe Sir Sie sind großartig :) –

Verwandte Themen