Javascript YDN DB按ID删除记录(IndexedDB)
我正在为IndexedDB使用YDN DB,我想使用其id从对象存储中删除一条记录。 这是我的模式:Javascript YDN DB按ID删除记录(IndexedDB),javascript,html,indexeddb,ydn-db,Javascript,Html,Indexeddb,Ydn Db,我正在为IndexedDB使用YDN DB,我想使用其id从对象存储中删除一条记录。 这是我的模式: var personsSchema = { name: "persons", keyPath: "id", autoIncrement: true, indexes: [{ name: "id", unique: true }, { name: "firstname", unique: false, multiEntry: false }, { n
var personsSchema = {
name: "persons",
keyPath: "id",
autoIncrement: true,
indexes: [{
name: "id",
unique: true
}, {
name: "firstname",
unique: false,
multiEntry: false
}, {
name: "lastname",
unique: false,
multiEntry: false
}]
};
schema = {
stores: [personsSchema]
};
var db = new ydn.db.Storage("xdb", schema);
现在,我有了删除记录的功能:
function deleteEntry(id){
var id = parseInt(id);
var objectStore = "persons";
var iterator = new ydn.db.ValueCursors(objectStore, "id", ydn.db.KeyRange.only(id));
var mode = "readwrite";
request = db.open(iterator, 1).then(function(cursor){
cursor.clear();
}, mode);
}
此函数给出以下错误:
Uncaught ydn.error.ArgumentException:第二个参数必须是游标范围迭代器。
感谢您的回复。应该是:
function deleteEntry(id){
var id = parseInt(id);
var objectStore = "persons";
var iterator = new ydn.db.IndexValueCursors(objectStore, "id", ydn.db.KeyRange.only(id));
var mode = "readwrite";
request = db.open(function(cursor){
cursor.clear();
}, iterator, mode).then(function() {
console.log('cleared')
});
}
但是由于id
是主键,因此不需要索引,它应该是:
function deleteEntry(id){
var id = parseInt(id, 10);
var keys = db.remove("persons", id);
}
如果id不是主键,那么下面的代码运行起来会更有效率,因为它不会不必要地检索记录值
function deleteEntry(id){
var id = parseInt(id);
var objectStore = "persons";
db.keys(objectStore, "id", ydn.db.KeyRange.only(id)).done(function(keys) {
db.remove(objectStore, keys);
};
}
我已经更正了。这给了我一个错误:未捕获类型错误:反向。顺便说一句,谢谢这个插件。我使用了db.remove()。谢谢我在执行函数deleteEntry()后发现了这个错误。我看到,它应该是
IndexValueCursors
。