Angular 角速度(indexedDB)

Angular 角速度(indexedDB),angular,promise,indexeddb,dexie,Angular,Promise,Indexeddb,Dexie,我对Angular、Dexie(indexedDB)和Promissions都是新手,所以请善待我 我的数据库中有一些数据,为了保持简单和不言自明,让我们假设每个条目都保存id,(dogName)和dogbride 我想做一些类似的事情: if (id === 1) { // add some data }else { // add some other data 但是如果我做一些事情,比如: db.list.get({id: 1}, temp => this.entry

我对Angular、Dexie(indexedDB)和Promissions都是新手,所以请善待我

我的数据库中有一些数据,为了保持简单和不言自明,让我们假设每个条目都保存id,(dogName)和dogbride

我想做一些类似的事情:

if (id === 1) {
    // add some data
}else {
    // add some other data
但是如果我做一些事情,比如:

db.list.get({id: 1}, temp => this.entry = temp);
然后我可以在我的HTML中使用它,但在我的ts文件中它仍然是未定义的。 所以我试着用承诺来实现这一点,这就是我到目前为止想到的:

db.list.where('id').equals(1).first().then(function() {
    // add some data 
}).catch(function() {
    // add some other data
});
我希望,如果没有id=1的条目,它会进入catch,但它没有。 我想我必须下定决心去做一些事情,拒绝,但到目前为止我还不了解它们,所以我可以使用它们


有人知道如何解决这个问题吗?

如果没有找到结果,则从db.list.where('id').equals(1)返回的承诺将使用未定义的值进行解析,而不是拒绝

所以你基本上应该做:

db.list.where('id')。等于(1)。首先()然后(函数(项){
如果(项目){
//添加一些数据
}否则{
//添加一些其他数据
}
}).catch(函数(错误){
//记录或显示错误
});

谢谢你,我觉得有点像是看不见树木了。但是知道它返回undefined而不是reject确实很有帮助。