我正在尝试更新有人值守的俱乐部的用户时间。我之前能够做到这一点,但现在我总是得到与加载资源失败相同的错误:服务器响应状态为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");
});
}
}
})
答案 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放在工厂中,以便它成为您应用中的单例。