无法在'IDBKeyRange'上执行'only':该参数不是有效密钥

时间:2018-01-08 11:58:37

标签: indexeddb

我从indexeddb获取数据,使用jsstore.I得到响应的类。但是得到了 “无法在'IDBKeyRange'上执行''':参数不是有效的密钥。”控制台错误。为什么我收到此错误。任何人都可以帮助我。

//Get DBSchema(table & columns)
  private getDbSchema = function () {
    const tblArticle = {
      Name: this._indexedDBLiveDBTableName,
      Columns: [
       {
          Name: 'ParentName',
          NotNull: true,
          DataType: 'string'
        },
        {
          Name: 'ChildName',
          NotNull: true,
          DataType: 'string'
        }
        ,
        {
          Name: 'UpdatedDate',
          NotNull: true,
          DataType: 'string'
        }
      ]
    };

    const Database = {
      Name: this._indexedDBLiveDBName,
      Tables: [tblArticle]
    };
    return Database as any;
  };

 //Fetch articles From IndexedDB
GetArticleFromIndexedDb(section) {
    this._connection.openDb(this._indexedDBLiveDBName);
    return this._connection.select({
      From: this._indexedDBLiveDBTableName,
      Where: {
        ChildName: section
      }
    });
 }

部分的价值将像“印度”,“泰米尔纳德”

请找到附带的错误屏幕截图

here

我正在使用 jsstore 1.3.0

我将jsstore版本更新为1.4.1,它给出了“超出最大调用堆栈大小”

enter image description here

由于

2 个答案:

答案 0 :(得分:3)

这是由于提供的值无效。 IndexedDB支持值列表 - 数字,日期,字符串,二进制数据,数组:这些是有效键。

当您传递boolean,null或undefined值时,通常会抛出此错误。

查看w3c了解更多信息 - https://w3c.github.io/IndexedDB/#key-construct

答案 1 :(得分:0)

对于遇到相同问题并且实际上正在传递有效密钥的其他任何人,实际上可能是您正在运行。

objectStore.put(key, value)

什么时候应该跑步

objectStore.put(value, key)

与规格相反。