首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dexie JS ..删除问题

Dexie JS ..删除问题
EN

Stack Overflow用户
提问于 2020-07-22 21:32:40
回答 1查看 438关注 0票数 0

我正在尝试使用dexie.js从indexedDB中按ID删除记录。(Dexie.js是indexedDB的包装器)

代码语言:javascript
复制
//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上测试。未返回任何错误、警告或Promise异常。

如果你想在你的浏览器上测试这一点,这里是如何通过复制-粘贴将数据快速地放到开发控制台...

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"})});

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-23 08:51:40

请让您的promise-using函数返回一个promise,这样您就可以将调用链接到它们。

关于在Collection.each()中调用delete,这是不可能的,因为Collection.each()是只读的,除非您从读写事务中调用它。如果要在迭代中修改内容,请使用Collection.modify()而不是Collection.each()。这在Collection.each的注释部分进行了描述:https://dexie.org/docs/Collection/Collection.each()#notes

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63035406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档