11

クロムエクステンションを作成していますが、配列を格納できません。私はこれを達成するためにJSON stringify/parseを使うべきだと読んでいますが、それを使っている間違いがあります。chrome.storage.localで配列を格納する

chrome.storage.local.get(null, function(userKeyIds){ 
    if(userKeyIds===null){ 
     userKeyIds = []; 
    } 
    var userKeyIdsArray = JSON.parse(userKeyIds); 
    // Here I have an Uncaught SyntaxError: Unexpected token o 
    userKeyIdsArray.push({keyPairId: keyPairId,HasBeenUploadedYet: false}); 
    chrome.storage.local.set(JSON.stringify(userKeyIdsArray),function(){ 
     if(chrome.runtime.lastError){ 
      console.log("An error occured : "+chrome.runtime.lastError); 
     } 
     else{ 
      chrome.storage.local.get(null, function(userKeyIds){ 
       console.log(userKeyIds)}); 
     } 
    }); 
}); 

どのように私のようなオブジェクトの配列格納することができ{keyPairIdを:keyPairId、HasBeenUploadedYet:偽}?

+1

とそれを解析/文字列化する必要はありませんオブジェクト/配列を格納することができます。配列は直接格納できます。 – BeardFist

+0

@BeardFist私はUncaught TypeErrorを持っています:オブジェクト#には、次のコードのためのメソッド 'push'がありません。そのため、配列をストリング化する必要があると思います。 'chrome.storage.local.get(ヌル、関数(userKeysIds){ 場合(userKeysIds === NULL){ userKeysIds =新しいアレイ();} userKeysIds.push({keyPairId:keyPairId、HasBeenUploadedYet。 ' –

+0

' keys'を使用して取得して設定します。取得すると、それを取得すると、それが取得されます。 'chrome.storage.local.get( 'userKeyIds'、function(stuff){console.log(stuff.userKeyIds);});' – BeardFist

答えて

27

localStorageと新しいChrome Storage APIを間違えたと思います。
- あなたはlocalStorage
の場合、JSON文字列を必要と - あなたはが直接新しいStorage API

// by passing an object you can define default values e.g.: [] 
chrome.storage.local.get({userKeyIds: []}, function (result) { 
    // the input argument is ALWAYS an object containing the queried keys 
    // so we select the key we need 
    var userKeyIds = result.userKeyIds; 
    userKeyIds.push({keyPairId: keyPairId, HasBeenUploadedYet: false}); 
    // set the new array value to the same key 
    chrome.storage.local.set({userKeyIds: userKeyIds}, function() { 
     // you can use strings instead of objects 
     // if you don't want to define default values 
     chrome.storage.local.get('userKeyIds', function (result) { 
      console.log(result.userKeyIds) 
     }); 
    }); 
}); 
+3

のようなオブジェクトです。 デフォルト値のヒント: –

+1

問題はありません。うれしく思っています。 – galambalazs

+0

私たちがuserKeyIdsオブジェクトとしてキーを設定しているとき、文字列である最後の 'userKeyIds'でデータを取得する方法はありますか?コードは正常に動作しているようです。 – mik