敲除并绑定到indexeddb对象库

时间:2014-01-30 03:07:15

标签: knockout.js indexeddb

作为一个基本示例,我单击一个按钮,然后将记录输入indexeddb对象库。我现在想要用新记录更新observable。

以下代码有效。但是,我想知道这是否是正确的方法。 “getAll”函数是我找到的IndexedDB-getAll-shim。

self.addPersonRecord = function(){
    // item being added
    data = {name: "Some User", email: "aa2314123@something.com" };
    var obj = db.transaction(["people"], "readwrite").objectStore("people");
    var req = obj.add(data);

    // result of save
    req.onsuccess = function(event) {

        // get all items from db
        obj.getAll().onsuccess = function (ev) {
            // update observable
            self.chosenPageData({people: ev.target.result});
        };
    };

};

1 个答案:

答案 0 :(得分:0)

你的方法似乎很好。一对夫妇建议改进:

  • 添加后getAll()没有理由complete。对象存储添加应该返回主键,然后您可以使用该主键来查找该对象。

  • 我自己使用success事件而不是event.target.result事件,因为我发现有时候数据在{{1}}之前实际上并不可用。