AWS Cognito -离线数据可用性



我正在构建一个phonegap应用程序,并使用AWS Cognito存储用户数据。在Cognito的描述中,据说数据是离线可用的。这在我的代码中不起作用:

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);
       });
      }
     });
    });
   }
  });
 });
}

身份池和Facebook令牌的AWS凭据先前已设置,并在在线模式下工作,但在离线时,我没有获得数据集数据。

我做错了什么,或者是一般不可能得到Cognito数据集数据,而离线?我读到,数据实际上被保存在本地存储中。

我正在使用当前的AWS SKD (Release v2.1.42)和Amazon Cognito JS。

可以脱机获取数据。您需要同步数据集以获取其中的任何内容,否则它们将为空。你在这么做吗?如果没有,请尝试这样做,但如果是这样,您可以更新上面的代码吗?

aws-sdk-js有一个bug导致离线bug。CognitoSync依赖于aws-sdk-js。现在应该可以工作了,因为aws-sdk-js@2.7.21

最新更新