2017-03-23 6 views
1

私はイオンフレームワークにはかなり新しいです。私はSQLiteでアプリケーションを開発しています。アプリはブラウザ上で正常に動作します。私は、デバイス上で実行した場合しかし、それはSQLIteの 'SUM(total)'はアンドロイドデバイスではなくブラウザ上で動作します。

Cannot read property 'SUM(total)' of undefined 

はここに私のコードスニペットだと言う:私は何をやっていることは、データベースにSUM値を保存するのではなく、ある

$scope.items = []; 
    $scope.grandTotal = 0; 
    $scope.receiptnumber = 0; 
    $scope.receiptnumber = $scope.receiptnumber + 1; 
    $scope.items = []; 
    $scope.item = {}; 
    $scope.grandTotal = null; 



    $ionicPlatform.ready(function() { 

     //EXPERIMENT CODE STARTS 
     var query2 = "SELECT * FROM items WHERE quantity!='' "; 
     console.log(query2); 
     $cordovaSQLite.execute(db, query2, []).then(function (res) { 

      if (res.rows.length > 0) { 

       for (var i = 0; i < res.rows.length; i++) { 

        $scope.items.push({ 

         itemname: res.rows.item(i).itemname, 
         price: res.rows.item(i).price, 
         quantity: res.rows.item(i).quantity, 


        }); 

        // $scope.items = $scope.items; 
        // console.log($scope.items); 
        $scope.items = $scope.items; 

       } 
      } else { 
       console.log("No results found"); 
      } 
     }, function (err) { 
      console.error("error=>" + err); 
     }); 

     //EXP CODE ENDS 


     $ionicHistory.clearCache(); 
     $ionicHistory.clearHistory(); 



     //GRAND TOTAL CALCULATION STARTS 
     var query = "SELECT SUM(total) FROM items"; 

     console.log(query); 
     $cordovaSQLite.execute(db, query, []).then(function (res) { 


      // $scope.grandTotal = res.rows[0]['SUM(total)']; 
      console.log("SUM TOTAL TEST"); 
      console.log(res.rows); 



     }, function (err) { 
      console.error("error=>" + err); 
     }); 



     //GRAND TOTAL CALCULATION ENDS    







     //Back button STARTS 
     $scope.myGoBack = function() { 

      $state.go("menu.sales"); 
      // window.history.back(); 

     }; 

     //BackButton ends 

     //Charge button functionality STARTS===============================///////////////////////// 

     $scope.charge = function() { 

      $state.go('transactionsuccess'); 

      // INITIAL UPDATE OF ORDER NUMBER STARTS 

      // var query5 = "UPDATE receipt SET ordernumber=" + "'" + $scope.receiptnumber + "'" + " WHERE quantity!='' OR quantity!='undefined' "; 
      // console.log(query5); 

      // $cordovaSQLite.execute(db, query5, []).then(function (result) { 

      //  $scope.items = []; 
      //  $scope.grandTotal = 0; 


      // }, function (err) { 
      //  console.error(err); 
      // }); 

      //ENDS    

     } 


    }); 

私が直接プログラムからそれをフェッチしています。私は、SUM(合計)をフェッチし、それがブラウザとデバイスの両方で動作するように変数に保存する任意の代替を知らないので

$scope.grandTotal = res.rows[0]['SUM(total)']; 

...:どちらがコードのこの部分で行われていますありがとう。

+0

エイリアスを使用しようとしましたか? – Selvin

答えて

2

documentationは言う:AS句がある場合、結果列の

名は、その列の「AS」句の値です。 AS句がない場合、列の名前は指定されておらず、SQLiteのあるリリースから次のリリースに変更される可能性があります。

予測可能な列名を取得するには、SELECT sum(total) AS MyLittleSum ...を使用する必要があります。

関連する問題