2015-04-03 68 views
1

我能夠從DynamoDB收集數據,但是我嘗試使用AngularJS服務將數據傳遞給控制器​​時未定義TypeError。讓AngularJS與AWS DynamoDB合作

// Query for Replicated Site Using Name 
coachdb.query(param, function(err,data) { 
    if (err) { 
    console.log(err, err.stack); // an error occurred 
    } else { 
    if (data.Items.length > 0) { 
     //console.log(data); // THIS IS LOGGING DATA 

      var x = (data); 
      var y = x.Items[0]; 
      console.log(x.Items[0]); // THIS LOGS DATA 
      console.log(y);   // THIS LOGS THE SAME DATA 

      this.coach = function() { 
       return y;    // THIS SEEMS TO BE WHERE MY ERROR IS COMMING FROM. 
      } 

     if ("firstName" in x.Items[0]) { 
     var firstName = x.Items[0].firstName.S; 
     alert(firstName); // THIS PRODUCES AN ALERT THAT WORKS 
     } 


    } 
    } 
}); 

我也可以手動創建一個對象,這與我從DynamoDB中提取的功能相當,而且工作得很好。

var nestObject = { 
    "company": { "S" : "ACME"}, 
    "email" : {"S" : "[email protected]"}, 
    "firstName" : {"S" : "Jared"}, 
    "lastName" : {"S" : "Whipple"}, 
    "phone" : {"S" : "435.494.3333"}, 
    "repNum" : {"N" : 12164} 
}; 

this.coach = function() { 
    return nestObject; 
} 

我怎樣才能從DynamoDB數據傳遞 表名:ximoRepList

+0

這與dynamodb或couchdb有什麼關係?什麼是coachdb? – TimoSolo 2016-09-09 13:41:01

+0

不,這只是一個嚴重的命名參數 – 2016-09-11 00:24:23

回答

1

在你Angular Service,你將使用couchDb API,我會建議使用Angular $q promise chain logic。這有助於實現無縫綁定解決方案,同時也有助於解決用戶體驗問題。

嘗試類似這樣的東西。

angular.module('MyApp', []) 
    .controller('MyController', function($scope, MyService) { 
     $scope.someDataFromCouchDb = MyService.getSomeData(); 
    }) 
    .factory('MyService', function($q) { 
     return { 
      getSomeData: function() { 
       var deferred = $q.defer(); 

       couchdb.query(param, function(err, data) { 
        if (err) { 
         console.log(err, err.stack); 

         deferred.reject(err); 
        } else { 
         if (data.Items.length > 0) { 
          console.log(data); 

          // return the data 
          // you could also pre-process it before you return it 
          deferred.resolve(data); 
         } 
        } 
       }); 

       return deferred.promise; 
      } 
     } 
    }); 
+0

工作。數據現在被拖入控制器。你如何與Angular的國家合作? – 2015-04-03 08:28:15