【发布时间】:2020-11-12 01:36:18
【问题描述】:
我正在尝试使用 dexie.js 从 indexedDB 中按 ID 删除记录。 (Dexie.js 是 indexedDB 的包装器)
//Database and table structure
window.trollflixDB_offline_jokes = new Dexie("trollflixDB_offline_jokes");
trollflixDB_offline_jokes.version(1).stores({
offline_jokes: "++id, joke_id, joke"
});
//Get data
window.get_offline_jokes = function(){
trollflixDB_offline_jokes.offline_jokes.where('id').above(-1).limit(1).each(result => {
console.log(result.id); //122
del_joke(result.id);
});
};
//Delete data
window.del_joke = function(delete_id){
console.log(delete_id); //122
console.log(typeof delete_id, typeof Dexie, typeof trollflixDB_offline_jokes, typeof trollflixDB_offline_jokes.offline_jokes);
//number function object object
trollflixDB_offline_jokes.offline_jokes.where('id').equals(delete_id).delete();
};
get_offline_jokes();
当我在 DEV 控制台上或在函数范围外尝试时,该函数正在工作。
trollflixDB_offline_jokes.offline_jokes.where('id').equals(122).delete();
我尝试使用不同的语法,但它不起作用。
trollflixDB.recent_notifications.where({'id': delete_id}).delete();
在 Opera、Chrome 上测试。没有返回任何错误、警告或承诺异常。
如果您想在浏览器上进行测试,这里是如何通过复制粘贴快速将数据放入开发控制台...
const getScript=e=>new Promise((o,n)=>{const t=document.createElement("script");t.src=e,t.async=!0,t.onerror=n,t.onload=t.onreadystatechange=function(){const e=this.readyState;e&&"loaded"!==e&&"complete"!==e||(t.onload=t.onreadystatechange=null,o())},document.head.appendChild(t)});getScript("https://unpkg.com/dexie@2.0.4/dist/dexie.min.js").then(()=>{window.trollflixDB_offline_jokes=new Dexie("trollflixDB_offline_jokes"),trollflixDB_offline_jokes.version(1).stores({offline_jokes:"++id, joke_id, joke"}),trollflixDB_offline_jokes.offline_jokes.put({joke_id:"32HUHU)",joke:"xD XD"})});
【问题讨论】:
标签: javascript promise indexeddb dexie dexiejs