我有 2 个数据库。我想清除数据库并添加新内容。我正在使用以下方法。
function updateDB(db, dbInstance, newElements) {
return dbInstance.forEach(function(oldElement) {
dbInstance.remove(oldElement);
}).then(function() {
console.log('Deleted all rows');
return db.saveChanges(function() {
dbInstance.addMany(newElements);
return db.saveChanges(function(){
console.log('Added '+newElements.length+' rows');
return true;
});
});
});
}
从技术上讲,我调用了上述方法 2 次。IE
return updateDB(db1, db1.dbIns1, newElements1).then(function() {
return updateDB(db2, db2.dbIns2, newElements2).then(function() {
return true;
});
});
该方法的定义如下。这是在加载时完成的,并且调用了 onready 方法:
$data.Entity.extend("Db1Name", {
Id: { type: "string", key: true},
Name: { type: "string"},
Values : {type: "string"}
});
$data.EntityContext.extend("db1Test", {
db1Ins: { type: $data.EntitySet, elementType: Db1Name }
});
var db1 = new db1Test({ name: "indexedDb", databaseName: "db1Ins" });
在 Firefox 中执行此操作时,我InvalidStateError: A mutation operation was attempted on a database that did not allow mutations.
会多次执行 db.saveChanges() 。这是代码问题吗?它在 Chrome 中运行良好。