我正在尝试为访问我网站的用户设置Cognito UnAuthenticated creds。但是,我遇到了#34;错误将循环结构转换为JSON"从Cognito分配用户ID后,我在同步管理器上调用同步方法...请参阅下面的代码..
非常感谢任何解决此问题的帮助
// Initialize the Amazon Cognito credentials provider
AWS.config.region = 'us-east-1'; // Region
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'us-east-1:my-id-pool-id'
});
function getMeACognito() {
AWS.config.credentials.get(function(){
var syncClient = new AWS.CognitoSyncManager();
syncClient.openOrCreateDataset('yaHeardPrefs', function(err, dataset) {
dataset.put('userPrefs', 'samplePrefs', function(err, record){
if(err)
{
console.log('(Sync error)Received error while saving prefs = ' + err);
}
dataset.synchronize({
onSuccess: function(data, newRecords) {
console.log('success');
},
onFailure: function(err){
console.log('Error while sync = ' + err);
},
onConflict: function(err) {
console.log('error / conflict = ' + err);
}
});
});
});
});
}

我得到的错误是 -
aws-sdk-2.3.15.min.js:25 Uncaught TypeError: Converting circular structure to JSON
请注意,我确实理解JSON中的循环结构转换错误是基于几个谷歌搜索...但是,我无法控制Cognito库在这里创建的JSON对象...因此,需要帮助找出解决之道。如果你们中的任何人之前已经面对这个问题,并且有解决方案,请回复。
答案 0 :(得分:0)
在上面的应用程序中,对于在浏览器客户端创建的每个新Cognito用户,我都在创建一个新的数据集并向其中添加一些信息。
我还设置了Cognito来触发用户创建的Lambda函数。
因此,在创建新用户期间,Cognito触发了Lambda函数,并在将用户数据集更新操作标记为“完成” /“成功”之前,同步等待该函数成功返回。
在Lambda函数中,我还尝试使用一些其他信息为在浏览器中创建的用户更新同一数据集。这似乎触发了对Cognito浏览器客户端的更新。毕竟,随着用户信息的变化,Cognito的主要功能是使其各种客户端保持同步。
如SO answer here中所述,当我停止尝试同时在客户端和lambda函数上更新同一数据集时,这消失了。