wake-up-neo.com

Speichern von Objekten in localStorage

Ich habe ein Array wie dieses:

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

Ich habe es in localstorage gespeichert und als ich Daten von localstorage abrief, bekam ich den Wert:

[object, object]

Wie kann ich dieses Problem lösen?

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

}
18
Khushi

lokaler Speicher, der nur für String-Schlüssel/Wert-Paare geeignet ist, die Sie wie unten beschrieben verwenden können, indem Sie JSON.stringify und den Wert JSON.parse verwenden

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

Legen Sie das Objekt ab:

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

Rufen Sie das Objekt aus dem Speicher ab:

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

console.log('retrievedObject: ', JSON.parse(retrievedObject));
41
Curiousdev

es ist ein wenig spät für die Beantwortung, aber ich möchte antworten, bis zukünftige Betrachter es verwenden können, Javascript Objekte als Referenz verwenden, dann, wenn wir ein Objekt in localStorage speichern, speichern wir in Wirklichkeit die Adresse des Objekts, nicht den Inhalt des Objekts! Dann, wenn wir Objektinhalte speichern wollen (absolut wollen wir), sollten wir wie folgt vorgehen:

so speichern:

localStorage.setItem('my_item', JSON.stringify(my_object));   

und so verwenden:

var my_object = JSON.parse(localStorage.getItem('my_item'));

hoffe hilfreich zu sein :)

5

Mit localDataStorage können Sie Objekte im lokalen Speicher ablegen. Hier können Sie die folgenden "Typen" transparent setzen/erhalten: Array, Boolean, Date, Float, Integer, Null, Object oder String.

[DISCLAIMER] Ich bin der Autor des Dienstprogramms [/ DISCLAIMER]

Beispiele:

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

Wie Sie sehen, werden die Grundwerte respektiert. In Ihrem Fall würden wir das tun:

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

Beachten Sie, dass Sie das Objekt einfach ausdrücken können. (Alle Zeichenfolgen werden für Sie im Hintergrund ausgeführt.) Wenn wir den Schlüssel zurückerhalten, erhalten wir:

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