我有一个Ionic应用程序,我在其中存储数组和Native-Storage。 这个数组是一个对象数组。
我这样存储了它:
>>> array1:CertainType [] 至少有50个混洗元素
this.nativeStorage.setItem('array1', { property: array1 })
.then(
() => { console.log('array1 stored') },
error => { console.log('array1 not Stored',error)
});
我检索这样的项目:
this.nativeStorage.getItem('array1').then(
array1 => {
//On the Sucess of getting Array1 use it to create Array2
array2 = array1.splice(0,5); //<-- MY PROBLEM IS HERE
},
error => {
console.error('Error Getting Array', error);
}
);
我不断收到错误
我认为它是因为存储和检索的过程混淆了数组的类型等。
我试图进行投射:
..array1 as CertainType[]
- EDITED&gt;&gt; 我尝试过stringfying和JSONparsing。
this.nativeStorage.setItem('array1', { property: JSON.stringify(array1)}).then(. . . .
array2 = JSON.parse(array1);
抛出此错误:
ERROR Error: Uncaught (in promise): SyntaxError: Unexpected token o in JSON at position 1
SyntaxError: Unexpected token o in JSON at position 1
at JSON.parse (<anonymous>)
但我一直在splice()上得到同样的错误。
如果我不使用存储逻辑,代码运行正常....任何线索。我错过了什么? :/
答案 0 :(得分:1)
在localStorage中存储之前使用JSON stringify,因为它将返回一个promise 就这样做:
var test = { test: "thing", test2: "thing2", test3: [0, 2, 44] };
localStorage.setItem("test", JSON.stringify(test));
var test2 = localStorage.getItem("test");
test = JSON.parse(test2);
答案 1 :(得分:0)
Ionic Native Storage Documentation让我很困惑。
this.nativeStorage.setItem('myitem', {property: 'value', anotherProperty: 'anotherValue'})
.then(
() => console.log('Stored item!'),
error => console.error('Error storing item', error)
);
我坚持使用这本书并在我的应用上使用几乎相同的代码。但那个词“property”在那里打破了我的职责。
我上面的好贡献者,坚持(感谢上帝)使用JSON.stringify
和JSON.parse
来保存和检索数据。
所以我做了,但不断出错。然后我意识到:当我尝试检索数据时,我的数组存储在一个Object上。好!但是 UNDER 一个 p-r-o-p-e-r-y 属性..
如果我使用array1.property获取了我的array1,我会得到我想要的东西。
最后,只需稍加改动就可以使它像时钟一样工作:
this.nativeStorage.setItem('array1', JSON.stringfy(array)})
.then(. . .
this.storage.get('array').then( array1 => {
console.log(JSON.parse(array1));