无法加载资源:服务器响应状态为409(冲突)

时间:2017-04-25 15:00:06

标签: angularjs ionic-framework azure-mobile-services

我正在尝试更新有人值守的俱乐部的用户时间。我之前能够做到这一点,但现在我总是得到与加载资源失败相同的错误:服务器响应状态为409(冲突)。这对我来说很麻烦,因为我正在使用正确的ID进行更新,它应该可以工作。另一个问题是它没有在错误中给我足够的信息来知道发生了什么。这就是我要求帮助的原因。提前谢谢。

错误来自的服务

.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");


    });




}
}
})

1 个答案:

答案 0 :(得分:2)

为了使更新操作正常工作,您上次在客户端上下载的版本必须与服务器上的版本相同。即版本字段(由响应中的ETag标头和对象中的version属性公开)必须匹配。如果他们不这样做,就会发生冲突。

查看https://shellmonger.com/2016/04/25/30-days-of-zumo-v2-azure-mobile-apps-day-12-conflict-resolution/,了解有关如何处理冲突的详细信息。

我还注意到您没有为您的MobileServiceClient使用Singleton。查看https://adrianhall.github.io/develop-mobile-apps-with-csharp-and-azure/chapter6/angular/以获取有关如何在Angular应用中使用MobileServiceClient的一些提示。具体来说,请注意您应该将MobileServiceClient放在工厂中,以便它成为您应用中的单例。