【问题标题】:Dexie.js: Table.where() errors with "Cannot read property 'bound' of undefined"Dexie.js:Table.where() 错误,“无法读取未定义的属性‘绑定’”
【发布时间】:2021-02-05 01:15:54
【问题描述】:

我在让 where() 语句在 Dexie 中工作时遇到了一些麻烦。我尝试使用 where 会导致以下错误:

console.warn node_modules/dexie/dist/dexie.js:1273 未处理的拒绝:TypeError:无法读取未定义的属性“绑定” 在 makeIDBKeyRange (node_modules/dexie/src/dbcore/dbcore-indexeddb.ts:112:21) 在 node_modules/dexie/src/dbcore/dbcore-indexeddb.ts:314:31 ...

这是我使用的代码:

从“dexie”导入 Dexie; // @ts-ignore 没有虚假 indexeddb 的类型 从'fake-indexeddb'导入indexedDB; 类 TestDatabase 扩展 Dexie { 构造函数(){ 超级(“测试”); this.version(1).stores({ 数据:“身份证,姓名” }); } } test("dexie", async ()=>{ Dexie.dependencies.indexedDB = indexedDB; const db = new TestDatabase(); 等待 db.table("data").put({id: "x", name: "xname"}); const x=await db.table("data").get("x"); 期望 (x.name).toEqual("xname"); const x2=await db.table("data").where("id").equals("x").toArray() 期望 (x2[0].name).toEqual("xname"); })

测试似乎在调用 toArray() 时失败。我怎样才能让这个测试通过?

【问题讨论】:

  • 尝试删除.toArray() 看起来是为了传递回调。

标签: typescript indexeddb dexie


【解决方案1】:

我认为您也缺少设置 Dexie.dependencies.IDBKeyRange。

Fake-indexeddb 建议在 node 中集成 fake-indexeddb:

const Dexie = require("dexie");
require("fake-indexeddb/auto");

const db = new Dexie("MyDatabase");

their docs

【讨论】:

    【解决方案2】:

    谢谢@大卫。文档让我找到了这个解决方案。它运行没有错误:

    从“dexie”导入 Dexie; // @ts-ignore 没有虚假 indexeddb 的类型 从'fake-indexeddb'导入indexedDB; 类 TestDatabase 扩展 Dexie { 构造函数(){ const IDBKeyRange=require("fake-indexeddb/lib/FDBKeyRange"); 超级(“测试”,{ 索引数据库:索引数据库, IDBKeyRange:IDBKeyRange, }); this.version(1).stores({ 数据:“身份证,姓名” }); } } test("dexie", async ()=>{ const db = new TestDatabase(); 等待 db.table("data").put({id: "x", name: "xname"}); const x=await db.table("data").get("x"); 期望 (x.name).toEqual("xname"); const x2=await db.table("data").where("id").equals("x").toArray(); 期望 (x2[0].name).toEqual("xname"); })

    【讨论】:

    • 太棒了。您的解决方案没有 require("fake-indexeddb/auto") 那样突兀。
    猜你喜欢
    • 2018-10-30
    • 1970-01-01
    • 2022-06-16
    • 2022-07-28
    • 2020-10-15
    • 2020-02-15
    • 1970-01-01
    • 2016-04-28
    相关资源
    最近更新 更多