#javascript #node.js #json #electron
#javascript #node.js #json #электрон
Вопрос:
Создание простой программы для создания заметок, в которой вы добавляете заметки, и они сохраняются в файле JSON, но всякий раз, когда я пишу 2 заметки, файл JSON полностью очищается. Это не проблема, когда я просто выполняю скрипт, используя $ node notes.js
для тестирования функций, только когда я вызываю его из приложения npm.
notes.js
const fs = require("fs");
let rawdata = fs.readFileSync('notedb.json');
let notes = JSON.parse(rawdata);
// takes in note, adds it to database
function addnote(note) {
// format item to prepare for json
var jsonitem = {
"note": note
};
// add item to the end of json file
notes.push(jsonitem);
// write the item
fs.writeFile("notedb.json", JSON.stringify(notes), err => {
if (err) console.log("error");
});
// reload the notes on the website
shownotes();
}
function shownotes() {
// put notes into string
var notestostring;
for (i = 0; i < notes.length; i ) {
notestostring = notes[i]["note"]
}
// add to document
document.getElementById("note-ul").innerHTML = notestostring;
}
notes.html
<!DOCTYPE html>
<script type="text/javascript" src="notes.js">
<!-- input with script that makes it submit when enter key is hit -->
<input type="text" onkeydown="add(this);" id="note-input">
<script>
function add(ele) {
if (event.keyCode == 13) {
addnote(ele.value);
var form = document.getElementById("note-input");
}
}
</script>
Я добавлю первую заметку, и она будет добавлена в файл JSON без проблем, затем добавлю вторую заметку, и весь файл будет пуст
(Примечание: я сократил до кода, чтобы просто включить важные элементы, игнорировать синтаксические ошибки)
Комментарии:
1. Для чего вы используете
fs
в браузере?2. Извините, я не использую браузер, я использую npm и electron (
$ npm start
) для запуска программы3. Вы получаете какие-либо ошибки? Вместо
console.log('error')
doconsole.log(err)
.
Ответ №1:
В конечном итоге проблема была устранена и вместо этого использовался файл CSV в качестве хранилища. Я думаю, что это как-то связано с асинхронной записью / синтаксическим анализом, но поскольку я относительно новичок в javascript, я не уверен, как работает асинхронная обработка.
Комментарии:
1. Возникла та же проблема с записью и чтением одного и того же файла в одном и том же скрипте. Только использовал json в качестве временного носителя перед интеграцией с SQL, так что ничего страшного.