处理错误后提交索引数据库事务

IndexedDB transaction commit after handling error

本文关键字:数据库 事务 索引 提交 错误 处理      更新时间:2023-09-26

我一直在尝试将2,5百万随机生成的人放入数据库中。在代码中,我做了一批 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
  }
}

事务有效,我可以用所有用户填充我的数据库。但是,将创建索引"bsn"放在唯一上会使它失败。

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

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

调用event.preventDefault()将阻止事务中止,但事件仍将传播到 transaction.onerror 处理程序,这可能会令人困惑。如果您想摆脱该消息,只需致电 event.stopPropagation() .更多信息和示例代码可以在此答案中找到。