Javascript AWS Cognito-离线数据可用性
我正在构建一个phonegap应用程序,并使用AWS Cognito存储用户数据。在Cognito的描述中,据说数据是离线可用的。这在我的代码中不起作用:Javascript AWS Cognito-离线数据可用性,javascript,cordova,amazon-web-services,offline,amazon-cognito,Javascript,Cordova,Amazon Web Services,Offline,Amazon Cognito,我正在构建一个phonegap应用程序,并使用AWS Cognito存储用户数据。在Cognito的描述中,据说数据是离线可用的。这在我的代码中不起作用: var add_data; function getCognitoData(){ var params = { IdentityPoolId: COGNITO_IDENTITY_POOL_ID, Logins: { 'graph.facebook.com': FACEBOOK_TOKEN } }; AWS.
var add_data;
function getCognitoData(){
var params = {
IdentityPoolId: COGNITO_IDENTITY_POOL_ID,
Logins: {
'graph.facebook.com': FACEBOOK_TOKEN
}
};
AWS.config.region = AWS_REGION;
AWS.config.credentials = new AWS.CognitoIdentityCredentials(params);
AWS.config.credentials.get(function(err) {
if (err) {
console.log("Error: "+err);
return;
}
console.log("Cognito Identity Id: " + AWS.config.credentials.identityId);
var syncClient = new AWS.CognitoSyncManager();
syncClient.openOrCreateDataset('myDataset', function(err, dataset) {
dataset.get('myKey', function(err, value) {
console.log(value, err);
});
add_data = function(thisid, thisval) {
dataset.put(thisid, thisval, function(err, record){
dataset.synchronize({
onSuccess: function(data, newRecords) {
console.log("success", newRecords);
},
onFailure: function(err) {
console.log("error", err);
},
onConflict: function(dataset, conflicts, callback) {
console.log("sync conflict", dataset, conflicts);
var resolved = [];
for (var i=0; i<conflicts.length; i++) {
resolved.push(conflicts[i].resolveWithRemoteRecord());
}
dataset.resolve(resolved, function() {
return callback(true);
});
}
});
});
}
});
});
}
var添加数据;
函数getCognitoData(){
变量参数={
IdentityPoolId:COGNITO_IDENTITY_POOL_ID,
登录:{
“graph.facebook.com”:facebook\u代币
}
};
AWS.config.region=AWS_region;
AWS.config.credentials=新的AWS.CognitoIdentityCredentials(参数);
AWS.config.credentials.get(函数(err){
如果(错误){
日志(“错误:+err”);
返回;
}
log(“Cognito标识Id:+AWS.config.credentials.identityId”);
var syncClient=new AWS.CognitoSyncManager();
syncClient.openOrCreateDataset('myDataset',函数(err,dataset){
dataset.get('myKey',函数(err,value){
console.log(值,err);
});
add_data=函数(thisid,thisval){
put(thisid,thisval,function(err,record){
dataset.synchronize({
onSuccess:函数(数据、新记录){
console.log(“success”,newRecords);
},
onFailure:函数(err){
日志(“错误”,err);
},
onConflict:函数(数据集、冲突、回调){
console.log(“同步冲突”、数据集、冲突);
var解析=[];
对于(var i=0;i可以脱机获取数据。您需要访问数据集以获取其中的任何内容,否则这些内容都是空的。您正在这样做吗?如果没有,请尝试这样做,但是如果是,您可以更新上面的代码吗?aws sdk js有一个错误导致脱机错误。CognitoSync取决于aws sdk js
。从aws sdk开始,现在应该可以工作了-js@2.7.21
。确保更新。嗨,杰夫,谢谢你的快速回答!我包括了添加数据的部分。我在添加数据后立即调用数据集上的同步,但仍然没有脱机可用的数据。嗯……put调用就是将数据写入本地ca的che.您是否检查了put调用中的错误?看起来,标识ID在脱机时丢失,用户联机后会立即分配新的标识。其他人也有同样的问题:为什么需要在“脱机”中同步数据集场景?根据定义,如果应用程序处于脱机状态,它甚至无法同步回Cognito云。为了澄清,您需要在联机时进行同步,以便在本地获取数据,并在脱机时访问数据。您是否找到解决方案?我遇到了相同的问题…自修复错误以来,这对您是否有效?