CloudKit JS提供了保存,删除和获取记录的方法,但是没有简单的方法可以更新现有记录。该文档说明了如何执行此操作:
var query = {
operationType : 'forceUpdate',
recordType: 'List',
record : {
recordName : 'TheRecordIWannaUpdate',
fields: { TheFieldToUpdate: { 'value': 42}}
}
};
container.publicCloudDatabase.performQuery(query).then(function(response) {
if(response.hasErrors) {
console.log(response.errors[0]);
} else {
console.log('It's working')
}
});
我尝试了此代码,但返回的It's working
却是未更新的记录,此代码有什么问题?
要更新记录,可以使用recordChangeTag。需要最新的recordChangeTag。
从服务器获取记录时,将获得该记录在服务器上的当前版本。但是,在您获取记录后的任何时间,其他用户可能会将记录的较新版本保存到服务器。每次保存记录时,服务器会将记录的更改令牌更新为新值。当您将记录实例保存到服务器时,服务器会将记录中的令牌与服务器上的令牌进行比较。如果两个令牌匹配,则服务器知道您已修改记录的最新版本,并且您的更改可以立即应用。如果两个令牌不匹配,服务器将应用您的应用指定的保存策略来确定如何继续。
例子
var record = {
recordType: 'List',
recordName: TheRecordIWannaUpdate,
recordChangeTag: TheRecordTag,
fields: {
TheFieldToUpdate: {
value: 42
}
}
};
在保存策略不适合我的工作,但您可以添加它。
var options = {
zoneName: undefined,
operationType : 'forceUpdate'
};
container.publicCloudDatabase.saveRecord(record,options)
.then(function(response) {
if(response.hasErrors) {
console.log(response.errors[0]);
} else {
console.log("It's working");
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句