我正在构建一个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(版本v2.1.42)和Amazon Cognito JS。
答案 0 :(得分:0)
可以使数据脱机。您需要synchronize数据集来获取内部可能包含的内容,否则它们将为空。你在做吗?如果没有,请尝试这样做,但如果是这样,您可以更新上面的代码吗?
答案 1 :(得分:0)
aws-sdk-js
存在导致脱机错误的错误。 CognitoSync依赖于aws-sdk-js
。从aws-sdk-js@2.7.21
开始应该正常工作。确保你更新。