问题标签 [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.
vue.js - 带有 vue 的离子存储
我正在使用Ionic Framework v5
with构建应用程序Vue 3.0.0
。
我Vuex store
用来存储全局应用信息,例如用户登录令牌。
我还需要在应用程序关闭或刷新时保存此令牌,因此我需要将其存储在某种本地存储中。
官方文档建议用于@ionic/storage
访问多个平台上的存储引擎。
要初始化商店,我需要执行以下代码:
我对这一切都很陌生,我找不到在哪里放置这个代码来初始化存储,以及我如何才能访问 vuex 存储中的存储对象,执行storage.set(...)
和storage.get(...)
?
angular - storage.get 在离子存储中不起作用(角度)
我正在尝试使用离子存储来保存和加载用于访问 APP 中的后端 API 的身份验证令牌,但我无法从存储中获取值。
我已经安装了离子存储(Angular 版本),如组件 GH 页面所示:https ://github.com/ionic-team/ionic-storage ,使用以下命令:
然后我在我的 Globals 服务中导入了存储服务,我创建它是为了成为我的应用程序中所有全局值的中心:
然后我创建了一个 saveToken 方法,它将已经_authenticationToken
由另一种方法定义的身份验证令牌存储在离子存储中:
当我执行该saveToken
方法时,结果是这样的(忽略红色的行,它们来自其他进程,因为 saveToken 是异步的):
所以我的令牌被保存了,我可以在 Chrome 开发工具的应用程序选项卡中看到它的值:
但问题来了。当我尝试使用下面的方法加载保存的令牌时,我得到一个空值返回,就好像令牌没有保存一样。当应用程序再次打开时,我正在这样做,以恢复登录会话。
上面的代码将产生以下消息,表明没有从存储返回值。
我正在使用 chrome 浏览器运行应用程序ionic serve
,并认为在应用程序重新加载后存储可能会重置,但我已经检查了应用程序选项卡并且身份验证令牌在那里。
angular - 在 Ionic Storage 上为 Angular 配置多个对象存储
我正在一个Angular项目中使用Ionic Storage作为数据层构建一个混合应用程序。项目首选数据库/驱动程序的顺序是:SQLite(用于移动应用程序)、IndexedDB(用于网络应用程序)。
据我所知,Ionic Storage 插件使用 Local Forage 来提供本地存储。本地草料允许我为每个商店都有一个实例,这是推荐的。
对象存储是 IndexedDB 的核心概念。其他数据库中的对应对象称为表或集合。[...] 一个数据库可能有多个存储:一个用于用户,另一个用于商品等。 -- ObjectStore
Angular 的 IonicStorageModule 是一个单例 - 只有静态方法 forRoot 被公开 - 并且它的配置在初始化时传递,所以我应该只有一个存储/表用于所有类型的对象。我的配置如下:
我的问题
有没有办法使用 Angular 的 Ionic Storage 配置多个商店 - 一个用于客户,一个用于产品?我应该直接使用 Local Forage 吗?
angular - Angular 12 + Ionic 5:解析器不等待存储和 HTTP 调用完成
情况:
这个问题是关于我正在使用 Angular 12 和 Ionic 5 构建的 SPA。当我在主页上时,我可以单击侧菜单中的“订单历史”链接,这会将我引导到订单历史页面。我正在使用解析器,以便在路由完成之前从数据库中获取订单历史记录,以便在路由完成时,用户可以看到数据,因为它可以通过解析器轻松获得。在这个解析器中,执行了 2 个主要操作(严格按顺序)。他们是:
从 Ionic Storage 接收当前登录的用户 ID。
使用从上述步骤接收到的当前登录用户 ID,并对后端进行 HTTP 调用以获取与用户相关的订单。只有在 HTTP 调用成功完成后,导航到“订单历史”页面并将 HTTP 调用数据记录到控制台。
问题:
当我单击侧菜单中的“订单历史记录”链接时,解析器运行,从存储中获取当前登录的用户 ID,但它不等待HTTP 调用完成。相反,它只是简单地路由到 Order History 页面,然后执行 HTTP 请求,然后给我 HTTP 请求的结果。但这超出了解析器的目的!Resolver 应该等待所有调用完成,然后导航到目标页面,但相反,它导航到目标页面,然后完成 API 调用并提供数据。我正在尝试解决此问题,以便解析器在实际路由发生之前执行上述 2 个主要操作。
这是我的代码:
应用程序路由.module.ts:
获取订单历史.resolver.ts
身份验证.service.ts
订单.service.ts
订单历史.page.ts
angular - 尝试登录时始终未定义离子存储
所以基本上,我用管理员和用户创建了一个基于角色的登录系统。当我尝试登录时,用户访问令牌始终为空,我不知道为什么。我花了大约 20 个小时解决这个问题,但没有任何帮助。任何帮助,将不胜感激!
这是我的登录方法:
我的身份验证服务:
由于这个问题,无法登录。