2017-04-25 20 views
0

私は出席したクラブのユーザー時間を更新しようとしています。これまで一度もやり遂げることができましたが、現在は常にリソースをロードできませんでした:サーバーは409(コンフリクト)のステータスで応答しました。私は正しいIDで更新しているので、これは私にはうんざりです。別の問題は、何が起こっているのかを知るために、エラーの情報が十分に与えられていないことです。それが私が助けを求めている理由です。前もって感謝します。リソースの読み込みに失敗しました:サーバーが409のステータスで応答しました(競合)

エラーは、更新操作が動作するためには

.service('hourAdder', function(){ 

    return{ 

addHours:function(userID,meetingID){ 
var client = new WindowsAzure.MobileServiceClient('My mobile Service'); 


     client.getTable('Meeting').where({id: meetingID}).read().done(function (results) { 
     var hours = results[0].Hours; 
     var points = results[0].Points; 
     var club = results[0].ClubID; 
     console.log("Hours:" + hours+" Points:"+points+" Club:"+club); 


     client.getTable('AttendedClubs').where({id: club,UniqueUserID: userID}).read().done(function(hoursPoints){ 

     points = points + parseInt(hoursPoints[0].Points); 
     hours = hours + parseInt(hoursPoints[0].Hours); 

     client.getTable('AttendedClubs').update({id: club,UniqueUserID: userID, Hours: hours, Points: points}).done(function(updated){ 



    }, function(error) 
    { 


     console.log("Updating Hours Errors"+ error); 

    }); 


    }, function(error) 
    { 


     console.log("Getting Attended Clubs"+ error); 

    }); 



    }, function(error) 
    { 

     console.log("One of the poeple returned an error"); 


    }); 




} 
} 
}) 
+0

サーバサイドで起こっていることを理解することなく、競合が何であるかを知ることは難しいです。彼らは、サーバーの現在の状態と競合しているときに、通常409回の競合が発生すると言います。サーバーはこのリソースをもう更新したくないかもしれませんし、リソースが新しいIDを持っているかもしれません。しかし、あなたのサーバーであるブラックボックスをよりよく理解することなく、伝えるのは難しいです。 –

答えて

2

から来ているサービス、あなたは最後のクライアントにダウンロードされたバージョンでは、サーバ上のバージョンと同じバージョンである必要があります。すなわちバージョンフィールド(レスポンスのETagヘッダとオブジェクトのversionプロパティによって公開される)は一致しなければならない(MUST)。もしそうでなければ、あなたは葛藤します。

コンフリクトの処理方法の詳細については、https://shellmonger.com/2016/04/25/30-days-of-zumo-v2-azure-mobile-apps-day-12-conflict-resolution/を参照してください。

MobileServiceClientにシングルトンを使用していないことにも注意してください。角度アプリでMobileServiceClientを使用する方法のヒントについては、https://adrianhall.github.io/develop-mobile-apps-with-csharp-and-azure/chapter6/angular/をご覧ください。具体的には、MobileServiceClientをファクトリに配置して、アプリケーション内のシングルトンにする必要があります。

+0

シングルトンについてお手伝いしてくれてありがとう!私はすでにそれを自分のコードに実装しています。さて、紛争については、なぜこれが起こっているのかを知っていると思いますが、それを修正する方法はわかりません。私のサーバーでは、私はIDとUniqueUserIDをユニークなデュオにしました....この2つの組み合わせがユニークでなければならないことを意味します。私はこれを更新しようとするとエラーになると思います。しかし、バージョン管理の場合、私はそれをどのように修正するのか正確にはわかりません。私は、更新呼び出しでバージョンを追加しようとしましたが、うまくいきませんでした。ありがとうございます@Adrian Hall – Dedawg

+0

このページ:https://github.com/Azure/azure-mobile-apps-js-client/blob/master/offline-sync.md - JavaScriptとCordova SDKの競合処理について説明しています。 –

+0

私はバージョンが同じであったことを確認し、それは働いた!ありがとうございました!!! @アドリアンホール – Dedawg

関連する問題