【问题标题】:Problems trying to retrieve data from local storage尝试从本地存储中检索数据时出现问题
【发布时间】:2021-02-23 16:35:20
【问题描述】:

我正在尝试从 IONIC 和 ANGULAR 制作的这个应用程序中的离子本地存储中检索一些数据。 仍然看不到我正在忽略的内容,但是一旦触发该过程,数据就不会暴露。

假设我在以这种方式安装了所有必需的插件后将数据设置在我的离子存储中 :

DataStorageService

import { Storage } from "@ionic/storage";

allMoviesfavorites: MovieSelectedDetails[] = [];

  saveAtStorage(movieToSave: MovieSelectedDetails) {
     ....asigning some value to variable allMoviesfavorites...

     this.storage.set("favorites", this.allMoviesfavorites);
  }

同样在同一个服务中,我建立了以这种方式检索它的方法

DataStorageService

import { Storage } from "@ionic/storage";

 allMoviesfavorites: MovieSelectedDetails[] = [];

constructor( private storage: Storage ) { this.loadfavoritesinStorage(); }
 
OPTION1
loadfavoritesinStorage() {
    this.storage.get("favorites").then((result) => {
      if (result == null) {
        result = [];
      }
      this.allMoviesfavorites = result;
      
    });

    return this.allMoviesfavorites;
  }

OPTION 2
 async loadfavoritesinStorage() {
    return this.storage.get("favorites").then((result) => {

       if (result == null) {
        result = [];
      }
      this.allMoviesfavorites =  result;
      console.log(result);
      

      return this.allMoviesfavorites;
    });
  }

如您所见,只需将我在那里设置的所有数据都放入我的本地存储容器,一旦到达那里,无论我得到什么结果都会分配给变量 allMoviesFavorite,该变量之前已初始化为一个空数组。

然后在元素上,我想公开我在 ngOnInit 方法上触发的数据图形化所有数据。 我还记录了所有数据以便检查,但我没有收到任何数据

Tab

import { DataStorageService } from "../services/data-storage.service";


moviesInFavorites: MovieSelectedDetails[] = [];
  constructor(private storageservice: DataStorageService) {}

  ngOnInit() {
    this.getFavorites();
  }

  async getFavorites() {
    let moviesInFavorites = await this.storageservice.loadfavoritesinStorage();
    console.log(moviesInFavorites);
    return (this.moviesInFavorites = moviesInFavorites);
  }

我该如何改善这个问题?

【问题讨论】:

    标签: angular ionic-framework ionic-storage


    【解决方案1】:

    问题是您在从存储中加载数据的异步代码完成之前返回allMoviesfavorites

    这应该可行:

    loadfavoritesinStorage() {
      return this.storage.get("favorites").then((result) => {
        if (result == null) {
          result = [];
        }
    
        this.allMoviesfavorites = result;
        
        return this.allMoviesfavorites; // <-- add the return here!      
      });
    }
    

    【讨论】:

    • @EnriqueGF 你是否也在loadfavoritesinStorage 方法的第一行返回承诺?这里:return this.storage.get(...
    • 是的,我确实按照你之前告诉我的那样尝试过,但总是让数组为空
    • 当我记录结果时,它的数据中没有任何内容
    • 因此猜测更多是指问题所在的离子存储及其获取方法
    • 我仍然不知道如何,但是在重新启动我的电脑后,最终工作了。无论如何感谢您的支持@sebaferreras
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多