【问题标题】:ionic Storage implemenation: get and set离子存储实现:获取和设置
【发布时间】:2018-11-29 07:50:39
【问题描述】:

我正在尝试了解如何从 ionic Storage 获取和检索数据,我需要一些帮助,因为我是这方面的新手。

假设我有一行将以下 JSON 文档设置为存储键:

 person = [
     { "id": "0001", 1:"name", 2:"gender", 3: "age":"5"},
     { "id": "0002", 1:"name", 2:"gender", 3: "age":"5"}
    ]

使用storage.set('persons', persons),我可以将JSON 的值设置为离子存储的persons 键。

当我想更改 JSON 文件 "id": 0002 的第二项时,我是否应该将整个 JSON 读取到内存中,搜索 0002 并修改然后将新的 JSON 文档发送回 ionic 存储?还是有更好的方法?

提前致谢。

【问题讨论】:

  • @Shinmanyi 您确定没有 typeo 错误,因为您将变量声明为人员,但在设置时您设置为人员。此外,与 localstorage 不同,离子存储基于 Promise 工作,即,如果您想获取值,您应该使用 Promise likestorage.get('person').then((resolved)=>{_code for value being resolved_},(rejected)=>{}).catch((error)=>{_error_});。对于值的更新,您应该获取整个 JSON 并更新。
  • @NRaghavendra 是的,你是对的。但是,我的问题只是 ionic Storage 的原理,我忽略了错字,但是是的,你是对的,它应该是 storage.set('persons', person)

标签: javascript typescript ionic-framework ionic3 ionic-storage


【解决方案1】:

Ionic Storage 基于 localForage 库,是一个简单的键/值存储。

根据您的示例,此存储有 2 个选项:

  1. 如果人员对象的整体大小相对较小,您确实可以将整个对象存储为一个值。这意味着如果您需要更改对象(或数组)内的项目 - 您必须获取完整对象(包含所有人员数据),更改项目,再次将其作为整个对象持久化(设置)

  2. 如果您希望执行大量此类操作并且数据大小会增长,您可以通过“拆分”对象并为每个“人”项使用不同的键作为值来解决此问题:

storage.set(“persons_person00”, 人[0])

这种方法需要您仔细考虑您的键命名约定,因为您希望与名称非常一致。

在后一种方法中,您可能需要使用 .forEach 存储方法,具体取决于您在初始化等期间“读取所有”的需要

【讨论】:

    【解决方案2】:

    在我看来,最好的方法是滚动数组,更改特定项目,然后使用此更改设置新的 obj。

    【讨论】:

    • 欢迎来到stackoverflow!您的答案的问题在于它是基于意见的。请修改它以证明您的选择,或者如果您不能删除它。随时查看帮助中心的answer section
    猜你喜欢
    • 2018-11-25
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    • 2019-06-20
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    • 2017-10-21
    相关资源
    最近更新 更多