“The keyPath option is not a valid key path” when trying to assign keyPath with variable
up vote
1
down vote
favorite
I have some JSON which looks like this which is declared as a variable called "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"
]
]
I'm trying assign a keyPath for an IndexedDB using the "Watchlist" - code below:
request.onupgradeneeded = function(event)
var db = event.target.result;
var key = jsonObjSuper["Watchlist"]
var objectStore = db.createObjectStore("instruments", keyPath: key);
but when I try this, I get this error:
"Uncaught DOMException: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path."
If I do a console.log on the "key" variable the value that pulls through is "My Watchlist" as expected.
I did also try to JSON.stringify the "key" variable to see if that made a difference but still got an error.
What could be causing it?
Many thanks
javascript json indexeddb
add a comment |
up vote
1
down vote
favorite
I have some JSON which looks like this which is declared as a variable called "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"
]
]
I'm trying assign a keyPath for an IndexedDB using the "Watchlist" - code below:
request.onupgradeneeded = function(event)
var db = event.target.result;
var key = jsonObjSuper["Watchlist"]
var objectStore = db.createObjectStore("instruments", keyPath: key);
but when I try this, I get this error:
"Uncaught DOMException: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path."
If I do a console.log on the "key" variable the value that pulls through is "My Watchlist" as expected.
I did also try to JSON.stringify the "key" variable to see if that made a difference but still got an error.
What could be causing it?
Many thanks
javascript json indexeddb
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
I have some JSON which looks like this which is declared as a variable called "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"
]
]
I'm trying assign a keyPath for an IndexedDB using the "Watchlist" - code below:
request.onupgradeneeded = function(event)
var db = event.target.result;
var key = jsonObjSuper["Watchlist"]
var objectStore = db.createObjectStore("instruments", keyPath: key);
but when I try this, I get this error:
"Uncaught DOMException: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path."
If I do a console.log on the "key" variable the value that pulls through is "My Watchlist" as expected.
I did also try to JSON.stringify the "key" variable to see if that made a difference but still got an error.
What could be causing it?
Many thanks
javascript json indexeddb
I have some JSON which looks like this which is declared as a variable called "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"
]
]
I'm trying assign a keyPath for an IndexedDB using the "Watchlist" - code below:
request.onupgradeneeded = function(event)
var db = event.target.result;
var key = jsonObjSuper["Watchlist"]
var objectStore = db.createObjectStore("instruments", keyPath: key);
but when I try this, I get this error:
"Uncaught DOMException: Failed to execute 'createObjectStore' on 'IDBDatabase': The keyPath option is not a valid key path."
If I do a console.log on the "key" variable the value that pulls through is "My Watchlist" as expected.
I did also try to JSON.stringify the "key" variable to see if that made a difference but still got an error.
What could be causing it?
Many thanks
javascript json indexeddb
javascript json indexeddb
edited Nov 11 at 16:52
Josh
11.4k63453
11.4k63453
asked Nov 11 at 12:24
user2547766
225
225
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
1
down vote
accepted
Given your code:
var key = jsonObjSuper["Watchlist"]
var objectStore = db.createObjectStore("instruments", keyPath: key);
And the data definition:
jsonObjSuper =
"Watchlist": "My Watchlist",
...
You are effectively doing:
db.createObjectStore("instruments", keyPath: "My Watchlist");
"My Watchlist"
is not a valid key path. A key path for an object store must be a string which is a valid JS identifier or a dot-separated sequence of identifiers or an empty string, or an array of one or more of the previous. (See https://w3c.github.io/IndexedDB/#key-path-construct for the precise definition.) So "My_Watchlist"
would be valid, but "My Watchlist"
is not.
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
accepted
Given your code:
var key = jsonObjSuper["Watchlist"]
var objectStore = db.createObjectStore("instruments", keyPath: key);
And the data definition:
jsonObjSuper =
"Watchlist": "My Watchlist",
...
You are effectively doing:
db.createObjectStore("instruments", keyPath: "My Watchlist");
"My Watchlist"
is not a valid key path. A key path for an object store must be a string which is a valid JS identifier or a dot-separated sequence of identifiers or an empty string, or an array of one or more of the previous. (See https://w3c.github.io/IndexedDB/#key-path-construct for the precise definition.) So "My_Watchlist"
would be valid, but "My Watchlist"
is not.
add a comment |
up vote
1
down vote
accepted
Given your code:
var key = jsonObjSuper["Watchlist"]
var objectStore = db.createObjectStore("instruments", keyPath: key);
And the data definition:
jsonObjSuper =
"Watchlist": "My Watchlist",
...
You are effectively doing:
db.createObjectStore("instruments", keyPath: "My Watchlist");
"My Watchlist"
is not a valid key path. A key path for an object store must be a string which is a valid JS identifier or a dot-separated sequence of identifiers or an empty string, or an array of one or more of the previous. (See https://w3c.github.io/IndexedDB/#key-path-construct for the precise definition.) So "My_Watchlist"
would be valid, but "My Watchlist"
is not.
add a comment |
up vote
1
down vote
accepted
up vote
1
down vote
accepted
Given your code:
var key = jsonObjSuper["Watchlist"]
var objectStore = db.createObjectStore("instruments", keyPath: key);
And the data definition:
jsonObjSuper =
"Watchlist": "My Watchlist",
...
You are effectively doing:
db.createObjectStore("instruments", keyPath: "My Watchlist");
"My Watchlist"
is not a valid key path. A key path for an object store must be a string which is a valid JS identifier or a dot-separated sequence of identifiers or an empty string, or an array of one or more of the previous. (See https://w3c.github.io/IndexedDB/#key-path-construct for the precise definition.) So "My_Watchlist"
would be valid, but "My Watchlist"
is not.
Given your code:
var key = jsonObjSuper["Watchlist"]
var objectStore = db.createObjectStore("instruments", keyPath: key);
And the data definition:
jsonObjSuper =
"Watchlist": "My Watchlist",
...
You are effectively doing:
db.createObjectStore("instruments", keyPath: "My Watchlist");
"My Watchlist"
is not a valid key path. A key path for an object store must be a string which is a valid JS identifier or a dot-separated sequence of identifiers or an empty string, or an array of one or more of the previous. (See https://w3c.github.io/IndexedDB/#key-path-construct for the precise definition.) So "My_Watchlist"
would be valid, but "My Watchlist"
is not.
answered Nov 14 at 19:15
Joshua Bell
4,102817
4,102817
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53248731%2fthe-keypath-option-is-not-a-valid-key-path-when-trying-to-assign-keypath-with%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown