求助:关于元服务中使用preferences的相关问题
2024-11-06 15:10:26
40次阅读
2个回答
悬赏10积分
对于数据持久化这个操作,元服务只支持“通过用户首选项实现数据持久化” 我的设想是这样的
在页面中我把数据保存下来并持久化 然后在元服务卡片中,点击其中一个按钮,直接获取我持久化的数据进行下一步的操作
出现的问题是: 通过预览器进行测试时,没有问题,效果符合我的设想 但是在模拟器中测试时,元服务卡片这里点击以后,无法获取持久化的数据
想请教这是什么问题?真机上是否会有这个问题? 谢谢
对于数据持久化,我这里写了一个用来调用的,最后两种测试情况都用的这段代码,实际代码如下:
const contextall = getContext(this);
export class mydata{
dataPreferences: preferences.Preferences | null = null;
context:Context | null = getContext(this);
_Init : () =>Promise<string>=()=>{
let that = this;
return new Promise((succ,err)=>{
if(that.dataPreferences != null)return;
console.log("applog:数据库初始化")
let options: preferences.Options = { name: 'myStore' };
that.dataPreferences = preferences.getPreferencesSync(that.context, options);
succ("success")
})
}
set : (key:string,value:string)=>Promise<string>=(key,value)=>{
return new Promise((succ, err) => {
if(this.dataPreferences){
this.dataPreferences.putSync(key,value);
this.dataPreferences.flush((err2: BusinessError) => {
if (err2) {
console.error(`applog:Failed to flush. Code:${err2.code}, message:${err2.message}`);
return;
}
console.log(`applog:数据保存成功:${key}:${value}`);
succ(`数据保存成功:${key}:${value}`);
})
}else{
console.log(`applog:数据保存失败:${key}:${value}`);
err(`数据保存失败:${key}:${value}`);
}
});
}
get :(key:string) =>Promise<string>=(key)=>{
return new Promise((succ,err)=>{
if(this.dataPreferences){
let val = ""+this.dataPreferences.getSync(key, 'null');
console.log(`applog:数据获取成功:${key}:${val}`);
succ(val);
}else{
console.log(`applog:数据获取失败`);
}
})
}
get2=(key:string)=>{
if(this.dataPreferences){
let val = ""+this.dataPreferences.getSync(key, 'null');
console.log(`applog:数据获取成功2:${key}:${val}`);
return val;
}else{
console.log(`applog:数据获取失败2`);
return "null";
}
}
delete:(key:string) =>Promise<string>=(key)=>{
return new Promise((succ,err)=>{
if(this.dataPreferences){
this.dataPreferences.deleteSync(key);
console.log("applog:数据删除成功");
succ(`数据删除成功`);
}
})
}
constructor(t?:boolean,context?:Context) {
if(!t){
this._Init();
}
if(!context){
this.context = contextall;
}else{
this.context = context;
}
}
}
00
想了解更多关于卡片知识点,也可以点击下面链接,观看官方最近一次关于卡片的直播回看视频。
创新场景:万能卡片开发实践
https://developer.huawei.com/consumer/cn/training/course/live/C101730105347358932
- 狼哥是这样的,我项目创建的时候选的是元服务不是app,关系型数据库提示说不支持
2024-11-07 10:40:01
最佳答案
hard to say
2024-11-07 14:19:43
最佳答案
建议改为关系型数据库,官方也建议在添加卡片onAddForm回调函数里,把卡片Id,规格,存储在关系型数据库里。