【问题标题】:Promises Angular Dexie(indexedDB)承诺 Angular Dexie(indexedDB)
【发布时间】:2020-03-30 13:36:31
【问题描述】:

我是 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 文件中它仍然是未定义的。 所以我试着用 promise 来做,这就是我迄今为止想出的:

db.list.where('id').equals(1).first().then(function() {
    // add some data 
}).catch(function() {
    // add some other data
});

我希望,如果没有 id = 1 的条目,它会进入 catch,但它没有。 我想我必须做一些解决和拒绝的事情,但到目前为止我还不了解它们,我可以使用它们。

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

【问题讨论】:

    标签: angular promise indexeddb dexie


    【解决方案1】:

    如果没有找到结果,则从 db.list.where('id').equals(1).first() 返回的 promise 将解析为 undefined 而不是拒绝。

    所以你基本上应该这样做:

    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
    });
    

    【讨论】:

    • 谢谢你,我感觉有点像只见树木不见森林。但是知道它返回 undefined 而不是 reject 真的很有帮助。
    猜你喜欢
    • 2019-06-17
    • 2019-12-04
    • 2015-09-09
    • 1970-01-01
    • 2021-10-15
    • 2019-11-03
    • 2016-10-02
    • 2015-07-31
    • 1970-01-01
    相关资源
    最近更新 更多