首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当尝试用变量赋值keyPath选项时,“keyPath选项不是有效的密钥路径”

当尝试用变量赋值keyPath选项时,“keyPath选项不是有效的密钥路径”
EN

Stack Overflow用户
提问于 2018-11-11 12:24:36
回答 1查看 756关注 0票数 2

我有一些类似于这样的JSON,它被声明为一个名为“jsonObjSuper”的变量:

代码语言:javascript
复制
{
"Watchlist": "My Watchlist",
"Instruments": {
"instrument1": [
  "Company ABC",
  [
    {
      "snapshotTimeUTC": "2018-11-01T00:00:00",
      "snapshotTime": "2018/11/01 00:00:00"
    }
  ]
],
"instrument2": [
  "Company XYZ",
  [
    {
      "snapshotTimeUTC": "2018-11-01T00:00:00",
      "snapshotTime": "2018/11/01 00:00:00"
    }
  ]
]
}
}

我正在使用“监视列表”(Watchlist)-下面的代码为IndexedDB分配一个IndexedDB:

代码语言:javascript
复制
request.onupgradeneeded = function(event) {
var db = event.target.result;
var key = jsonObjSuper["Watchlist"]
var objectStore = db.createObjectStore("instruments", { keyPath: key});
}

但是当我尝试这个时,我会发现这个错误:

"Uncaught :未能在‘IDBDatabase’上执行'createObjectStore‘:keyPath选项不是有效的密钥路径。“

如果我对"key“变量执行了一个console.log,则得到的值是"My”。

我也尝试过JSON.stringify这个“键”变量,看看它是否产生了不同的效果,但仍然有一个错误。

是什么引起的?

非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-14 19:15:34

考虑到你的代码:

代码语言:javascript
复制
var key = jsonObjSuper["Watchlist"]
var objectStore = db.createObjectStore("instruments", { keyPath: key});

以及数据定义:

代码语言:javascript
复制
jsonObjSuper = {
    "Watchlist": "My Watchlist",
    ...
}

你有效地做了:

代码语言:javascript
复制
db.createObjectStore("instruments", { keyPath: "My Watchlist"});

"My Watchlist"不是有效的密钥路径。对象存储的关键路径必须是一个字符串,它是一个有效的JS标识符或一个以点分隔的标识符序列或一个空字符串,或者是一个或多个前面的数组。(有关确切定义,请参见https://w3c.github.io/IndexedDB/#key-path-construct。)所以"My_Watchlist"是有效的,但"My Watchlist"不是。

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

https://stackoverflow.com/questions/53248731

复制
相关文章

相似问题

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