【发布时间】:2014-01-30 03:07:14
【问题描述】:
作为一个基本示例,我单击一个按钮,然后将一条记录输入到 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});
};
};
};
【问题讨论】:
-
不清楚你的问题是什么——你可以推入一个 observableArray——这就是你要问的吗?
-
我唯一担心该代码的是
onsuccess不保证在事务完成之前写入数据,因此您可能希望在中执行getAll避免竞争条件的新事务。见stackoverflow.com/questions/15151242/…
标签: knockout.js indexeddb