Javascript &引用;密钥路径选项不是有效的密钥路径";尝试使用变量分配keyPath时

Javascript &引用;密钥路径选项不是有效的密钥路径";尝试使用变量分配keyPath时,javascript,json,indexeddb,Javascript,Json,Indexeddb,我有一些JSON,看起来像这样,它被声明为一个名为“JSONOBJSPER”的变量: 我正在尝试使用下面的“监视列表”代码为IndexedDB分配密钥路径: request.onupgradeneeded = function(event) { var db = event.target.result; var key = jsonObjSuper["Watchlist"] var objectStore = db.createObjectStore("instruments", { keyPa

我有一些JSON,看起来像这样,它被声明为一个名为“JSONOBJSPER”的变量:

我正在尝试使用下面的“监视列表”代码为IndexedDB分配密钥路径:

request.onupgradeneeded = function(event) {
var db = event.target.result;
var key = jsonObjSuper["Watchlist"]
var objectStore = db.createObjectStore("instruments", { keyPath: key});
}
但当我尝试此操作时,会出现以下错误:

未捕获的DomeException:未能对“IDBDatabase”执行“createObjectStore”:keyPath选项不是有效的密钥路径

如果我在“key”变量上执行console.log,那么所得到的值就是预期的“我的观察列表”

我也尝试了JSON.stringify“key”变量,看看这是否有区别,但仍然得到了一个错误

是什么引起的

非常感谢您的代码:

var key = jsonObjSuper["Watchlist"]
var objectStore = db.createObjectStore("instruments", { keyPath: key});
以及数据定义:

jsonObjSuper = {
    "Watchlist": "My Watchlist",
    ...
}
你实际上在做:

db.createObjectStore("instruments", { keyPath: "My Watchlist"});
“我的监视列表”
不是有效的密钥路径。对象存储的键路径必须是一个字符串,该字符串是有效的JS标识符或以点分隔的标识符序列或空字符串,或一个或多个前一个标识符的数组。(有关精确定义,请参阅。)因此
“我的观察列表”
将有效,但
“我的观察列表”
无效

db.createObjectStore("instruments", { keyPath: "My Watchlist"});