typescript - Dexie.js:Table.where() 错误,“无法读取未定义的属性‘绑定’”
问题描述
我在让 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() 时失败。我怎样才能让这个测试通过?
解决方案
我认为您也缺少设置 Dexie.dependencies.IDBKeyRange 。
Fake-indexeddb 建议在 node 中集成 fake-indexeddb:
const Dexie = require("dexie");
require("fake-indexeddb/auto");
const db = new Dexie("MyDatabase");
查看他们的文档
推荐阅读
- javascript - ExpressJS 重定向在浏览器中给出 net::ERR_SSL_PROTOCOL_ERROR 错误
- google-apps-script - 返回二维数组的特定行并写入 Range
- python - 如何在 5x5 矩阵中在 1 和 0 之间切换并更新矩阵?熄灯逻辑游戏
- csv - Google Cloud Data Fusion 未在 GCS Bucket 中生成 CSV 输出
- jsonschema - 在python中验证json模式中的未知属性名称
- azure - Cosmos DB:是否曾经从更改源中删除更改?
- nginx - 如何使用 Nginx 在子目录中安装 Ghost?(得到 404)
- python - 如何从pyqt中的另一个窗口返回一个变量?
- arrays - 如何在 Google Apps 脚本中将数组项加入到每行的单个字符串中?
- sql - 如何将一个表中的部分字符串与另一表中的 ID 匹配?