#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);
});