我是NoSQL世界的新手,因为默认情况下Ionic 2支持简单的键值DB,所以我在这里得到了一些帮助。
我的应用程序表单非常大。如何保存新记录?如何检索这些特定记录?
目前,为了保存新记录,我正在做这样的事情:
save(data){
let newData = JSON.stringify(data);
this.storage.set('reports', newData);
}
这个问题是它覆盖了记录而不是插入新记录。
我正在检索这样的记录:
getData() {
return this.storage.get('reports');
}
如何使用存储的JSON中的某些值来获取特定记录?
感谢。
答案 0 :(得分:4)
您需要做的是将报告作为数组并将其设置为存储。 每当您需要插入新记录时,请执行
function(newData){
var some_variable = storage.get('reports'); //get Existing Table
some_variable.push(newData); //Inserts the new record to array
storage.set('reports', some_variable); //Saves report with updated data
}
为了单独获取特定报告,我希望您有一些ID或唯一属性y,您可以区分报告。假设您的报告json如下:
var report {id : "UniqueID", name : "A sample report json"}
然后获取报告,
function(reportId){
var reports = this.storage.get('reports');//fetches your reports Array
var wantedReport = {};//Variable to store the wanted report
reports.forEach(function(r){ //Looping the array.You can use a forloop as well
if(r.id === reportId){ //filtering for the wanted reportId
wantedReport = r; // storing the report to variable
}
})
return wantedReport; //Returning the report to the caller.
}
或者,如果您习惯使用Sql并希望采用类似Sql的方式存储这些数据,那么您可以安装Sqlite cordova plugin并将数据存储在Sqlite数据库中。