Значение всегда возвращает ноль из локального хранилища (Ionic 3 + angular 5)

1

Я просто добавил плагин для хранения в моем приложении с ионным 3 (с угловым 5). Документация довольно проста... по крайней мере, то, что я думал.

По какой-то причине я могу прекрасно хранить значение (также видимое в инструментах отладки), но я не могу его прочитать...

Мой код:

import {Injectable} from '@angular/core';
import {Storage} from '@ionic/storage';

@Injectable()
export class LocalStorageService {
constructor(private storage: Storage) {}

setItem(key: string, value: string | Object | number): Promise<void> {
    return this.storage.set(key, JSON.stringify(value));
}

getItem(key: string): Promise<string> {
    return this.storage.get(key)
        .then((value: any) => {
            console.log('---------------------------------------');
            console.log(value);
            return value;
        });
}

removeItem(key: string): Promise<void> {
    return this.storage.remove(key);
}

clear(): Promise<void> {
    return this.storage.clear();
}
}

Мой модуль:

NgModule({
declarations: [
    ...
],
imports: [
    ...
    IonicStorageModule.forRoot(),
    ...
],
exports: [
    ...
]
export class GlobalModule {
}

Поэтому я понятия не имею, что я делаю неправильно...? Может быть, это побочный эффект, потому что я не знаю, имеет ли это значение. Я уже использую плагин SQLite от ионного, и он отлично работает. Итак, теперь я пытаюсь добавить localstorage для хранения простых datapairs...

Заранее спасибо за помощь.

С уважением

  • 0
    Является ли console.log(value) в getItem() пустым?
  • 0
    Да, каждый раз ... И когда я открываю инструменты отладки Chrome, в разделе приложения -> локальное хранилище, я вижу ключ с правильным значением ...
Показать ещё 2 комментария
Теги:
angular
ionic3
local-storage
storage

1 ответ

1

getItem(key: string): Promise<string> возвращает обещание, но вы уже вызываете .then() на нем внутри метода. return не работает в .then() потому что это асинхронный метод в синхронном режиме. Либо верните обещание без .then(), либо ничего не возвращайте и не делайте что-то с помощью .then() в этом методе.

  • 1
    Я не верю, что это правда, вы всегда можете вернуться из then() , использовать возвращаемое значение, выполнив then() т. this.getItem(auth).then((tokenValue) => { ...}) , например, здесь он будет делать что-то вроде: this.getItem(auth).then((tokenValue) => { ...})
  • 0
    Обычно код представляет собой одну строку, возвращающую this.storage.get (ключ), я помещаю туда then, чтобы проверить значение ... потому что без "then ()" значение по-прежнему равно нулю ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню