承诺 Angular Dexie(indexedDB)
Promises Angular Dexie(indexedDB)
我是 Angular、Dexie(indexedDB) 和 Promises 的新手,所以请多关照。
我的数据库中有一些数据,为了保持简单和不言自明,假设每个条目都保存 id,(dogName)和 dogBreed.
我想做类似的事情:
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,但它没有。
我想我必须用 resolve 和 reject 做点什么,但到目前为止我还不理解它们,所以我可以使用它们。
有人知道如何解决这个问题吗?
如果没有找到结果,从 db.list.where('id').equals(1).first() 返回的 promise 将解析为值 undefined 而不是 reject。
所以你基本上应该这样做:
db.list.where('id').equals(1).first().then(function(item) {
if (item) {
// add some data
} else {
// add some other data
}
}).catch(function(error) {
// log or show the error
});
我是 Angular、Dexie(indexedDB) 和 Promises 的新手,所以请多关照。
我的数据库中有一些数据,为了保持简单和不言自明,假设每个条目都保存 id,(dogName)和 dogBreed.
我想做类似的事情:
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,但它没有。 我想我必须用 resolve 和 reject 做点什么,但到目前为止我还不理解它们,所以我可以使用它们。
有人知道如何解决这个问题吗?
如果没有找到结果,从 db.list.where('id').equals(1).first() 返回的 promise 将解析为值 undefined 而不是 reject。
所以你基本上应该这样做:
db.list.where('id').equals(1).first().then(function(item) {
if (item) {
// add some data
} else {
// add some other data
}
}).catch(function(error) {
// log or show the error
});