YDN 数据库 按 ID 删除记录 (索引数据库)
YDN DB Delete record by ID (IndexedDB)
我正在使用YDN数据库进行索引数据库,我想使用其ID从对象存储中删除记录。这是我的架构:
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: Second argument must be cursor range iterator.
感谢您的回复。
它应该是:
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);
};
}
我已经更正了 api 文档示例。
相关文章:
- 如何将索引数据库与 Metrostyle Javascript 一起使用
- HTML5/JavaScript.使用索引数据库时无法插入数据
- 索引数据库保存范围为
- 使用node.js将非常大的json文件索引/摄取到数据库中
- 索引数据库游标
- 索引数据库与DOM有什么关系吗?
- 索引数据库:删除功能不起作用
- 如何更新索引数据库中的数据
- 索引数据库删除数据库不会重置版本
- 从索引数据库中的 ajax 调用缓存 JSON,检查更改
- IndexedDB - 对象存储 vs 多个数据库 vs 索引
- 正确初始化索引数据库对象存储
- 如何从索引数据库获取所有值
- 索引数据库引用错误:未定义数据库
- 离线将 ZIP 上传到索引数据库
- 索引数据库,如何在不重新加载页面的情况下获取更新的数据
- 异步索引数据库
- 索引数据库中的两个查询
- Windows 8 应用程序中的索引数据库位置
- 索引数据库 - 检查表存在并包含数据