我有一些类似于这样的JSON,它被声明为一个名为“jsonObjSuper”的变量:
{
"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:
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这个“键”变量,看看它是否产生了不同的效果,但仍然有一个错误。
是什么引起的?
非常感谢
发布于 2018-11-14 19:15:34
考虑到你的代码:
var key = jsonObjSuper["Watchlist"]
var objectStore = db.createObjectStore("instruments", { keyPath: key});以及数据定义:
jsonObjSuper = {
"Watchlist": "My Watchlist",
...
}你有效地做了:
db.createObjectStore("instruments", { keyPath: "My Watchlist"});"My Watchlist"不是有效的密钥路径。对象存储的关键路径必须是一个字符串,它是一个有效的JS标识符或一个以点分隔的标识符序列或一个空字符串,或者是一个或多个前面的数组。(有关确切定义,请参见https://w3c.github.io/IndexedDB/#key-path-construct。)所以"My_Watchlist"是有效的,但"My Watchlist"不是。
https://stackoverflow.com/questions/53248731
复制相似问题