处理错误后的IndexedDB事务提交

时间:2013-09-11 09:28:00

标签: javascript indexeddb

我一直试图在数据库中放置250万随机生成的人。 在代码中,我创建了一批2.500个用户,然后提交了事务。

chancejs库生成一个guid,但并不总是唯一的。因此,只要它不是唯一的,我希望它将错误放在一个数组中并忽略.add&无论如何都要提交交易。

var transaction = db.connection.transaction(["users"], "readwrite"); 
var request = objectStore.add(newuser);

for (i=0;i<batchsize;i++){
  request.onerror = function(event) {
   event.cancelBubble = true;
   // Some kind of CONTINUE event here
  }
}

交易有效,我可以向所有用户填写我的数据库。 将createIndex'bsn'置于唯一状态会使它失败。

var index = objectStore.createIndex("bsn", "bsn", { unique: true });

2 个答案:

答案 0 :(得分:2)

当请求失败时,事件的默认操作是中止其rransaction。如果您不想要这种行为,请在请求或事务的onerror处理程序上调用event.preventDefault()。

答案 1 :(得分:1)

调用event.preventDefault()将阻止事务中止,但事件仍将传播到transaction.onerror处理程序,这可能会让人感到困惑。如果您想要删除该消息,只需致电event.stopPropagation()即可。可以找到更多信息和示例代码in this answer