2017-04-25 5 views
0

でデータベースのレコードを更新しようとしているイムこんにちは、私は、この関数はオブジェクトポイントのレコードを更新する数関数の戻りイオン、バック&

$scope.sum = function() 
{ 
    return $scope.inp + $scope.points; 
}; 

を返す関数と私のデータベースを更新しようとしている、列名とID 1:

$scope.addPoint = function() { 

    PointService.addPoint($scope.sum, 1) 
    .then(function(result) { 
     $scope.inp = 0; 

     getMyPoints(); 
    }); 
} 

addPoint = function(id,points) 
{ 
    return $http.put(getUrlForId(1),points,name); 
} 

エラーがあります。エラーの詳細:フィールドの 'System.Collections.Generic.Dictionary'

データ型に型 'int型' を変換できませんがフロートです。 コードに何が間違っていますか?

答えて

0

あなたはこの使用PointService.addPointerへの関数の参照()、 を渡している:これは、あなたの関数を実行し、addPoint機能への出力(idパラメータ)を渡します

$scope.addPoint = function() { 
 

 
    PointService.addPoint($scope.sum(), 1) // NOT PointService.addPoint($scope.sum, 1) 
 
    .then(function(result) { 
 
     $scope.inp = 0; 
 

 
     getMyPoints(); 
 
    }); 
 
}

をさらに安全な側では、$ scope.sum()からNumberを返すことができます。

$scope.sum = function() 
 
{ 
 
    return Number($scope.inp + $scope.points); 
 
};

+0

それはまだ私に同じエラーを与える:<文字列、オブジェクト>にint型に変換することができない私は、に)(scope.sumを変換する必要がありますオブジェクト文字列??? – Bartek

0

これはBackandにどのように連絡しているかの問題のようです。これは、手動でPUTリクエストを構築し、「データ」と「ポイント」と「名」を入れているBackand APIを呼び出すの古いバージョンである

addPoint = function(id,points) 
{ 
    return $http.put(getUrlForId(1),points,name); 
} 

:あなたは上のあなたのポイントを送信するために、次のコードを使用しますおよび "config"パラメータを$ httpに設定します。 PUTを介したオブジェクトの更新では、更新をオブジェクトとして提供する必要があります。したがって、オブジェクトのポイントと名前を更新する場合(上のコードスニペットからわかる内容に基づいていると仮定しています)、以下のようなオブジェクトにこれらのプロパティをカプセル化する必要があります一般的な形式:

{ 
    "field_name_1":"new value_1", 
    "field_name_2":"new value_2", 
    etc ... 
} 

これは要求の本文として送信されます。だから、あなたのコードのために、次のように変更し、この場合に役立ちます参照してください。

addPoint = function(id,points) 
{ 
    return $http.put(getUrlForId(1),{points: points, name: name}); 
} 

あなたは、この特定のエラーを見ている理由についての詳細情報を与えるために、Backandは体内でこのJSON形式に依存しています。私たちのプラットフォームは確かにより多くのバリデーションを行う必要があります(そして非適合入力をより上手く処理するための開発者向けのチケットを作成します)が、要求の本文を取り出して辞書オブジェクトに変換してから要求された操作。上のコードではボディとして「1.0」しか送信されないため、これは辞書への変換に失敗し、スタック例外と表示されている問題が発生します。

注釈として、これらのHTTPメソッドをカプセル化し、認証ヘッダー生成とHTTPメッセージングを実行し、応答を処理する約束を提供する新しいSDKを提供します。 Githubのページhttps://github.com/backand/vanilla-sdkで見つけることができます。新しいSDKを使用して同じ電話をかけるには、コードは次のようになります。

backand.object.update("your object name", 1, {name: name, points: points}) 
    .then(function(response){ 
    console.log(response.data); 
    });