代码之家  ›  专栏  ›  技术社区  ›  jamesharvey

sqlite存储中数据的动态键值(Ionic 3、Cordova、Angular 5)

  •  0
  • jamesharvey  · 技术社区  · 6 年前

    我正在尝试将多个数据数组对象保存到sqlite存储中。 我可以只保存一个,但每当我尝试保存另一个时,它都会覆盖具有相同密钥名称的前一个。我必须使键值动态化。我该怎么做?

    这是我的数据提供者ts文件。

    private options: any[] = [
    
        {
          "name": "option 01",
          "website": "www.google.com",
          "about": "choose this option 01",
          "id": "1"
        },
    
        {
          "name": "option 02",
          "website": "www.yahoo.com",
          "about": "choose this option 02",
          "id": "2"
        },
        {
          "name": "option 03",
          "website": "www.bing.com",
          "about": "choose this option 03",
          "id": "3"
        },
        {
          "name": "option 04",
          "website": "www.stackoverflow.com",
          "about": "choose this option 04",
          "id": "4"
        }
    ]
    

    这是我的家。ts文件。它可以很好地保存数据对象,但目前只能保存一个。 我希望能够在每个数据对象中使用不同的键值动态保存和删除多个。

      setValue(){
        this.storage.set("object",this.option).then((successData)=>{
          console.log("Data Stored!");
          console.log(successData);
        })
      }
      getValue(){
        this.storage.get("object").then((data)=>{
          console.log(data);
        })
      }
    
      removeValue() {
        this.storage.remove("object").then((data)=> {
          console.log("data removed!");
        })
      }
    

    提前感谢,理想情况下,我正在考虑使用不同的ID将多个数据对象保存到相同的键值中,但不幸的是,如果键值相同,它将覆盖以前的数据对象。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Sergey Rudenko    6 年前

    也许我在这里遗漏了更多的上下文,但请尝试让您的函数接受您所需选项的唯一键名(我称之为optionNumber)。

    见下文。

    setValue(optionNumber){
        this.storage.set("option"+optionNumber,this.options[optionNumber]).then((successData)=>{
          console.log("Data Stored!");
          console.log(successData);
        })
      }
      getValue(optionNumber){
        this.storage.get("option"+optionNumber).then((data)=>{
          console.log(data);
        })
      }
    
      removeValue(optionNumber) {
        this.storage.remove("option"+optionNumber).then((data)=> {
          console.log("data removed!");
        })
      }

    现在,一旦有了包含数据的选项数组(this.options),当需要存储特定选项时,只需执行以下操作:

    设置值(0)

    请注意,由于数组索引从0开始,如果没有选项0,则可能需要对此进行调整。