我有一个奇怪的问题: 我有一个简单的函数来从myData.ts中的数据库中获取用户信息。
test = <any>{};
getUserInfoFromPouch(filter: string):any{
this.db.get(filter).then((result) => {
this.test = result;
})
return this.test;
}
它有效......有点。
我在user-data-page构造函数中调用该函数:
this.userData = this.myData.getUserInfoFromPouch(this.userId);
console.log('------------------t1----------------------------------');
console.log(this.userData);
console.log('------------------t2----------------------------------');
console.log(this.myData.test);
但我只得到一个安培对象:
------------------t1---------------------------------- main.js:62736:9
Object { } main.js:62737:9
------------------t2---------------------------------- main.js:62738:9
Object { }
如果我通过按钮再次调用该功能,我会得到我期望的实际输出。 如果我不首先在构造函数中调用该函数,我必须使用该按钮两次来获取数据。 这非常令人困惑。 我尝试了许多不同的功能拼写,如:
test = <any>{};
getUserInfoFromPouch(filter: string):any{
return this.db.get(filter).then((result) => {
})
}
或
test = <any>{};
getUserInfoFromPouch(filter: string):any{
this.db.get(filter).then((result) => {
return result;
})
}
我做错了什么? 谢谢你的帮助。
顺便说一下。我在数据库中只有一条记录。 (用于测试目的)
修改 好的,我尝试了这样的功能:
async getUserInfoFromPouch(_id: string){
try {
this.test = await this.db.get(_id);
} catch (err) {
console.log(err);
}
console.log('------------------t3----------------------------------');
console.log(this.test);
}
我在我的用户页面的构造函数中调用该函数,就像之前一样。 在我调用函数之后,我用函数中的test var填充我的userdata:
this.myData.getUserInfoFromPouch("userinfo");
this.userData = this.myData.test;
console.log('------------------t1----------------------------------');
console.log(this.userData);
但userData为空。我得到了函数的console.output后我做了:
this.userData = this.myData.test;
我做错了一些事情; - (
答案 0 :(得分:1)
好的,它解决了承诺的问题。
this.myData.getDocumentById('userInfo').then(res=>{
if (res!=undefined){
this.userData=res;
}
}).catch(err=>{
console.log('userInfo-error: ', err)
});
现在它可以正常工作 我的getDocumentById函数锁定如下:
getDocumentById(id: string):any {
this.syncTwoWay();
return this.db.get(id).then((doc) => {
return doc;
}).catch((err) => {
console.log('getDocumentById' + err);
});
}