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

问题描述:

我正在尝试更新有人值班的俱乐部的用户小时数。我之前可以做到这一次,但现在我总是遇到与加载资源失败相同的错误:服务器响应的状态为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。再次,如果没有更好地理解您的服务器的黑匣子,很难说清楚。 –

未来为了更新操作工作的服务,您上次下载的客户端上的版本必须是同一版本的服务器上的版本。即版本字段(响应中的ETag头部和对象中的版本属性公开)必须匹配。如果他们不这样做,你会发生冲突。

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

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

+0

谢谢你帮忙,告诉我单身人士!我已经在我的代码中实现了。现在至于冲突,我想我有一个想法,为什么发生这种情况,但不知道如何解决它。在我的服务器中,我使id和UniqueUserID成为一个独特的二重奏...意味着两者的组合必须是唯一的。我想在尝试更新时会给我一个错误。但是,如果是版本控制,我不确定如何解决这个问题。我试图在更新调用中添加版本,但没有奏效。谢谢@Adrian Hall – Dedawg

+0

本页面:https://github.com/Azure/azure-mobile-apps-js-client/blob/master/offline-sync.md - 涵盖JavaScript和Cordova SDK中的冲突处理。 –

+0

我确保版本保持不变,它的工作!谢谢!!! @阿德里安大厅 – Dedawg