2017-02-03 11 views
12

Mam tablicę tak:przechowywania obiektów w localStorage

[{name:"test", time:"Date 2017-02-03T08:38:04.449Z"}]. 

i przechowywać go w localStorage i kiedy pobierania danych z pamięci lokalnej mam wartość

[object, object] 

Jak mogę rozwiązać ten kwestia. config.ts

import { Injectable } from "@angular/core"; 

@Injectable() 
export class TokenManager { 

public tokenKey: string = 'app_token'; 

constructor() { } 


store(content) { 
    var contentData; 

    console.log("inside localstorsge store:", content); 
    contentData = content.map(
     (data) => data.name 
    ) 
    console.log("contentData:", contentData) 
    localStorage.setItem(this.tokenKey, content); 
} 

retrieve() { 
    console.log("inside localstorage"); 
    let storedToken: any = localStorage.getItem(this.tokenKey); 
    console.log("storedToken:", storedToken);=====>here this console is [object object] 
    if (!storedToken) throw 'no token found'; 
    return storedToken; 
} 


} 
+1

próbowałeś to 'JSON.stringify (storedToken)'? –

+2

JSON.stringyfy obiekt przed zapisaniem w localstorage i przeanalizuj go podczas pobierania za pomocą JSON.parse. –

+0

@Satpal co to jest OP? –

Odpowiedz

24

lokalnej pamięci ograniczona do obsługi tylko ciąg par klucz/wartość można zrobić jak poniżej używając JSON.stringify i podczas uzyskiwania wartość JSON.parse

var testObject ={name:"test", time:"Date 2017-02-03T08:38:04.449Z"}; 

umieścić obiekt do przechowywania:

localStorage.setItem('testObject', JSON.stringify(testObject)); 

Odzyskaj obiekt ze schowka:

var retrievedObject = localStorage.getItem('testObject'); 

console.log('retrievedObject: ', JSON.parse(retrievedObject)); 
+0

działa dobrze dzięki za odpowiedź. ale podczas mapowania to mam jak każdy łańcuch podobny efekt: [ efekt: { efekt: „ efekt: n efekt: efekt : m efekt: e efekt:” Jak mogę rozwiązać ten problem? – Khushi

+0

Czy możesz zaktualizować swoje pytanie, aby dowiedzieć się, co jest nie tak? – Curiousdev

0

Łatwo jest przechowywać obiekty w pamięci lokalnej przy użyciu localDataStorage, gdzie można ustawić przezroczyste/otrzymać dowolny z następujących "typów": Array, Boolean, Date, Float, Integer, Null, Object lub String.

[OŚWIADCZENIE] Jestem autorem narzędzia [/ OŚWIADCZENIE]

Przykłady:

localDataStorage.set('key1', 'Belgian') 
localDataStorage.set('key2', 1200.0047) 
localDataStorage.set('key3', true) 
localDataStorage.set('key4', { 'RSK' : [1,'3',5,'7',9] }) 
localDataStorage.set('key5', null) 

localDataStorage.get('key1') --> 'Belgian' 
localDataStorage.get('key2') --> 1200.0047 
localDataStorage.get('key3') --> true 
localDataStorage.get('key4') --> Object {RSK: Array(5)} 
localDataStorage.get('key5') --> null 

Jak widać, prymitywne wartości są przestrzegane. Teraz w twoim przypadku możemy to zrobić:

>localDataStorage.set('testObject', { name : 'test', time : new Date('2017-02-03T08:38:04.449Z') }) 

Pamiętaj, że możesz wyraźnie wyrazić obiekt. (. Wszystkie stringamication odbywa się w tle dla Ciebie) Kiedy retreive klawisza, otrzymujemy:

>localDataStorage.get('testObject') --> 
>Object {name: "test", time: "2017-02-03T08:38:04.449Z"} 
Powiązane problemy