Quiero definir una matriz de objetos, luego almacenar objetos dentro de la matriz, sin embargo, solo tengo un objeto en la matriz (último objeto) y no puedo agregarle más objetos.
En la clase de servicio de datos
getData(){ return this.storage.get('x').then((val) => { console.log('x',val); }); } async setData( Name, Code, date){ let Info=[{ Name:Name, Code:Code, date:date }]; console.log(typeof(Info)); // returns object return this.storage.set('x',JSON.stringify(Info)); }Llamar a establecer y obtener métodos en la página de inicio:
async loadData() { await this.dataservice.getData(); } async addData(name,code,date){ await this.dataservice.setData(name,code,date); this.getData() }En Otra función en la página de inicio:
postAPI(){ this.addData('Sara','XXX','2022/10/10'); }Producción:
x [{…}]0: Name: "Sara" Code: "XXX" date: '2022/10/10' [[Prototype]]: Object length: 1 [[Prototype]]: Array(0)Si desea agregar datos al almacenamiento, primero debe obtenerlos y agregarlos.
async setData(data: any) { let _tmp = await this.storage.get('x') || [] ; _tmp.push(data); await this.storage.set('x', _tmp); }Si desea que todas las respuestas se guarden, mientras agrega los datos al almacenamiento, primero obtenga todos los datos existentes del almacenamiento, luego agregue/adjunte datos a los datos existentes y luego guarde todos los datos nuevamente en el almacenamiento.
async setData(Name, Code, date) { let existingData = await this.storage.get('x'); let newData = { Name:Name, Code: Code, date: date }; if (!existingData) { existingData = [newData] } else { existingData.push(newData); } await this.storage.set('x', JSON.stringify(existingData)); }