Хранилище NeutralinoJS

#javascript #json #api #storage #neutralinojs

#javascript #json #API #Хранение #neutralinojs

Вопрос:

Это API хранилища NeutralinoJS для записи JSON. Возможно ли обновить файл JSON (push-данные), а не просто перезаписать данные с помощью нового объекта JS. Как это сделать???

     // Javascript Object to be stored as JSON
let data = { 
    bucket : 'test', 
    content : { 
            item : 10 
    } 
}
// stores the data into JSON based data store.           
Neutralino.storage.putData(data,

// executes on successful storage of data
    function () {
    console.log('Data saved to storage/test.json');

    },
// executes if an error occurs

    function () {
    console.log('An error occured while saving the Data');

    }
);
 

Комментарии:

1. Я думаю, что на данный момент это невозможно. Лучшим обходным решением было бы прочитать данные хранилища (как объект json), чем обновить этот объект json и поместить обновленный json в хранилище.

Ответ №1:

Neutralino.storage API принимает строку вместо JSON для сохранения в локальном хранилище.

И вы можете очень легко создавать свои объекты JavaScript в виде строки, например:

 const myUser = {
  name: "John Doe",
  age: 19,
  married: false
}

const myUserString = JSON.stringify(myUser);
console.log(myUserString); // {"name":"John Doe","age":19,"married":false} 

Здесь вы можете увидеть, как мы использовали JSON.stringify метод для преобразования нашего объекта JavaScript в строку.

Теперь мы также можем преобразовать сгенерированную строку обратно в наш объект javascript, пример:

 const myUserString = '{"name":"John Doe","age":19,"married":false}';
const myUser = JSON.parse(myUserString);
console.log(myUser); 

Итак, теперь мы можем легко хранить наши объекты и массивы в локальном хранилище и легко изменять их, например:

 async function saveToStorage(myUser) {
  let myUserString = JSON.stringify(myUser);
  await Neutralino.storage.setData('myUser', myUserString);
});

async function loadFromStorage() {
  let myUserString = await Neutralino.storage.getData('myUser');
  let myUser = JSON.parse('myUser');
  return myUser;
}

saveToStorage({
  name: "John Doe",
  age: 19,
  married: false
}).then(async () => {
  let myUser = await loadFromStorage();
  myUser.name = "Jane Doe"
  await saveToStorage(myUser);
});