0

I want to update the dataId field of an object in localStorage. Object:

let responseJson = {
                      id: user.id,
                      username: user.username,
                      firstName: user.firstName,
                      dataId: 1000
                   };

I am tring using following code:

let loggedInUser = localStorage.getItem('user_id');
JSON.parse(loggedInUser).userId = parseInt(2000);
localStorage.setItem('user_id', loggedInUser);

Updated:

let loggedInUser = localStorage.getItem('user_id');
loggedInUser.dataId = parseInt(2000);
console.log('loggedInUser', JSON.stringify(loggedInUser));
localStorage.setItem('user_id', JSON.stringify(loggedInUser));
Varinder Sohal
  • 1,142
  • 5
  • 24
  • 44

3 Answers3

3

This can help:

let responseJson = {
                      id: user.id,
                      username: user.username,
                      firstName: user.firstName,
                      dataId: 1000
                   };

let loggedInUser = JSON.parse(localStorage.getItem('user_id'));
loggedInUser.dataId = parseInt(2000);
localStorage.setItem('user_id', JSON.stringify(loggedInUser));

enter image description here

1

In localStorage, all values must be of type string. So, you have to stringify your object before storing it.

localStorage.setItem('user_id', JSON.stringify(loggedInUser))

BTW: You should check the user_id value before parsing it (or encapsulate in a try/catch).

MadDeveloper
  • 1,000
  • 8
  • 13
1

You can do something like this and you should stringify it before setting to localStorage:

let loggedInUser = JSON.parse(localStorage.getItem('user_id'));
let loggedInUserObj = {...loggedInUser, dataId : 2000}; // <---should be dataId
localStorage.setItem('user_id', JSON.stringify(loggedInUserObj));

Note:- You are not updating the dataId property but userId.

Jai
  • 74,255
  • 12
  • 74
  • 103
  • Thankyou for your reply but your code just added new field not updated current available filed. – Varinder Sohal Jan 29 '20 at 08:55
  • @VarinderSohal oh yes. you should parse the string to object before and then destructure it to update. and one thing in your question you have posted to update the `userId` not `dataId`. – Jai Jan 29 '20 at 09:56