2012-05-12 65 views
0

我想要做索引數據庫的簡單應用程序。我想要將多個項目存儲在一個objectStore中。可能嗎?我想類似的東西,但它不工作:在一個對象中的多個項目商店

itemsDB.indexedDB.addTodo = function(Name, Desp) { 
    var db = itemsDB.indexedDB.db; 
    var trans = db.transaction(['items'], IDBTransaction.READ_WRITE); 
    var store = trans.objectStore("items"); 

    var data = { 
     "name": Name, 
     "description": Desp, 

    }; 

    var request = store.put(data); 
    } 

我用樣品從http://www.html5rocks.com/en/tutorials/indexeddb/todo/

回答

3

打靶「僅僅」是IndexedDB將縮小兼容客戶端的Chrome和Firefox用戶。看一下JayData,它支持你的對象存儲模式,並且有一個備選提供者列表選項:如果客戶端有IndexedDB,它將被使用,但是如果只有WebSQL客戶端有(95%的移動設備),那麼將使用webSQL 。

此外,語法更易於存儲或檢索,請檢查ToDo list example,這也顯示了備用提供程序選項。

1

IndexedDB的對象存儲被設計爲容納多個對象,讓您在它們的屬性光標。

究竟是什麼原因導致您的put問題不明確,但如果您在namedescription上有密鑰,它只會替換現有對象而不是添加新對象。您希望使用add而不是put

有一點需要記住HTML5Rocks的例子,目前他們只能在Chrome中工作(這恰好有一個滯後的IndexedDB實現)。

FWIW,一個小技巧是,這裏有一個在你的JavaScript錯誤(DESP VAR後多餘的逗號),這可能會阻止它在IE10上運行:

var data = { 
     "name": Name, 
     "description": Desp, 

    }; 
相關問題