问题标签 [ionic-storage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1091 浏览

vue.js - 带有 vue 的离子存储

我正在使用Ionic Framework v5with构建应用程序Vue 3.0.0

Vuex store用来存储全局应用信息,例如用户登录令牌。

我还需要在应用程序关闭或刷新时保存此令牌,因此我需要将其存储在某种本地存储中。

官方文档建议用于@ionic/storage访问多个平台上的存储引擎。

要初始化商店,我需要执行以下代码:

我对这一切都很陌生,我找不到在哪里放置这个代码来初始化存储,以及我如何才能访问 vuex 存储中的存储对象,执行storage.set(...)storage.get(...)

0 投票
1 回答
448 浏览

angular - storage.get 在离子存储中不起作用(角度)

我正在尝试使用离子存储来保存和加载用于访问 APP 中的后端 API 的身份验证令牌,但我无法从存储中获取值。

我已经安装了离子存储(Angular 版本),如组件 GH 页面所示:https ://github.com/ionic-team/ionic-storage ,使用以下命令:

然后我在我的 Globals 服务中导入了存储服务,我创建它是为了成为我的应用程序中所有全局值的中心:

然后我创建了一个 saveToken 方法,它将已经_authenticationToken由另一种方法定义的身份验证令牌存储在离子存储中:

当我执行该saveToken方法时,结果是这样的(忽略红色的行,它们来自其他进程,因为 saveToken 是异步的):

在此处输入图像描述

所以我的令牌被保存了,我可以在 Chrome 开发工具的应用程序选项卡中看到它的值:

在此处输入图像描述

但问题来了。当我尝试使用下面的方法加载保存的令牌时,我得到一个空值返回,就好像令牌没有保存一样。当应用程序再次打开时,我正在这样做,以恢复登录会话。

上面的代码将产生以下消息,表明没有从存储返回值。

在此处输入图像描述

我正在使用 chrome 浏览器运行应用程序ionic serve,并认为在应用程序重新加载后存储可能会重置,但我已经检查了应用程序选项卡并且身份验证令牌在那里。

0 投票
0 回答
39 浏览

angular - 在 Ionic Storage 上为 Angular 配置多个对象存储

我正在一个Angular项目中使用Ionic Storage作为数据层构建一个混合应用程序。项目首选数据库/驱动程序的顺序是:SQLite(用于移动应用程序)、IndexedDB(用于网络应用程序)。

据我所知,Ionic Storage 插件使用 Local Forage 来提供本地存储。本地草料允许我为每个商店都有一个实例,这是推荐的。

对象存储是 IndexedDB 的核心概念。其他数据库中的对应对象称为集合。[...] 一个数据库可能有多个存储:一个用于用户,另一个用于商品等。 -- ObjectStore

Angular 的 IonicStorageModule 是一个单例 - 只有静态方法 forRoot 被公开 - 并且它的配置在初始化时传递,所以我应该只有一个存储/表用于所有类型的对象。我的配置如下:

角度配置离子存储

我的问题

有没有办法使用 Angular 的 Ionic Storage 配置多个商店 - 一个用于客户,一个用于产品?我应该直接使用 Local Forage 吗?

0 投票
2 回答
68 浏览

angular - 离子存储未正确输出我存储的 JSON 数据 - Angular

我有以下内容:

我从我的 API 中以 JSON 格式获取数据并尝试存储它。

然后当我尝试在控制台中输出存储的数据时,我得到以下信息

图片示例

我想知道如何获取实际数据而不是对象对象

谢谢

更新 - 带有潜在解决方案的错误截图:

在此处输入图像描述

0 投票
3 回答
127 浏览

angular - Angular 12 + Ionic 5:解析器不等待存储和 HTTP 调用完成

情况:

这个问题是关于我正在使用 Angular 12 和 Ionic 5 构建的 SPA。当我在主页上时,我可以单击侧菜单中的“订单历史”链接,这会将我引导到订单历史页面。我正在使用解析器,以便在路由完成之前从数据库中获取订单历史记录,以便在路由完成时,用户可以看到数据,因为它可以通过解析器轻松获得。在这个解析器中,执行了 2 个主要操作(严格按顺序)。他们是:

  1. 从 Ionic Storage 接收当前登录的用户 ID。

  2. 使用从上述步骤接收到的当前登录用户 ID,并对后端进行 HTTP 调用以获取与用户相关的订单。只有在 HTTP 调用成功完成后,导航到“订单历史”页面并将 HTTP 调用数据记录到控制台。

问题:

当我单击侧菜单中的“订单历史记录”链接时,解析器运行,从存储中获取当前登录的用户 ID,但它不等待HTTP 调用完成。相反,它只是简单地路由到 Order History 页面,然后执行 HTTP 请求,然后给我 HTTP 请求的结果。但这超出了解析器的目的!Resolver 应该等待所有调用完成,然后导航到目标页面,但相反,它导航到目标页面,然后完成 API 调用并提供数据。我正在尝试解决此问题,以便解析器在实际路由发生之前执行上述 2 个主要操作。

这是我的代码:

应用程序路由.module.ts:

获取订单历史.resolver.ts

身份验证.service.ts

订单.service.ts

订单历史.page.ts

0 投票
0 回答
23 浏览

angular - 尝试登录时始终未定义离子存储

所以基本上,我用管理员和用户创建了一个基于角色的登录系统。当我尝试登录时,用户访问令牌始终为空,我不知道为什么。我花了大约 20 个小时解决这个问题,但没有任何帮助。任何帮助,将不胜感激!

这是我的登录方法:

我的身份验证服务:

由于这个问题,无法登录。