0

我一直在尝试将 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 });
4

2 回答 2

2

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

于 2013-09-11T11:22:20.753 回答
1

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

于 2014-04-03T12:27:41.460 回答