KeyPath name on object store Athletes_table is not indexed From previous:

亦凉 2023-01-20 05:59 102阅读 0赞

问题描述:当我使用本地数据dexie.js(对indexdb进行封装后的数据库)的时候遇到了这个坑,添加表的时候没有建立字段直接声明了一个id后就往里加对象数组,下面是建表代码

  1. //实例化数据库
  2. let db = new Dexie('sportsman');
  3. //创建数据表
  4. await db.version(1).stores({
  5. Athletes_table:'&id'
  6. });
  7. console.log('数据库:', db);

以为会自动创建索引,结果查询的时候就出现了这个警告。

  1. //查询代码
  2. new this.$Dexie('sportsman').open().then(async function(db) {
  3. console.log('数据库:', db);
  4. that.userData = await db.table('Athletes_table').where('name').equals('张三').toArray();
  5. db.close(); //获取数据后关闭数据库
  6. });

警告信息
在这里插入图片描述
提示索引未找到,但是光从数据看明明有这个索引:
在这里插入图片描述
解决方法:想使用dexie.js 进行where筛选查找必须在建表的时候创建索引才能根据此索引去搜索

  1. let db = new Dexie('sportsman');
  2. //创建数据表
  3. await db.version(1).stores({
  4. Athletes_table:'&id,name' //添加name索引,需要根据哪个字段查找就添加那个
  5. });
  6. console.log('数据库:', db);

希望此文能帮到您,欢迎留言交流
转载请附上原文链接

发表评论

表情:
评论列表 (有 0 条评论,102人围观)

还没有评论,来说两句吧...

相关阅读