Правильное сохранение данных JSON на сервере nodeJS - PullRequest
0 голосов
/ 02 февраля 2019

Я все еще работаю в своем SPA, где я могу отслеживать свои расходы.Каждый элемент расходов состоит из значения, даты, описания и тегов.

Клиент отправляет все эти данные на мой сервер, где я хочу сохранить их в файле JSON.

Мой код выглядит следующим образом: (json.push не работает)

        client.on('message', function(value, date, descr, tags) {
        console.log('message: ' + value, date, descr, tags );

        var exp = new Object();
        exp.id = id;
        exp.value = value;
        exp.date = date;
        exp.tags = tags;
        expArr[exp.id] = exp;
        id++;
        console.log(exp.id);



        fs.readFile('expenses.json', function (err, data) {
             var json = JSON.parse(data);
             json.push(exp);
             console.log(json);
             fs.writeFile("expenses.json", JSON.stringify(exp), 
             function(err){
                if (err) throw err;
                console.log('The data was appended to file!');
              });

        })

    });

Моя цель - каждый добавленный элемент должен добавляться в мой файл JSON.В конце это должно выглядеть так, например:

 {"expArray": [{"id":0,"value":"200","date":"dqwd","tags":"cnelw"},
          {"id":1,"value":"300","date":"dqwd","tags":"ncjlekw"},
          {"id":2,"value":"22","date":"dqwd","tags":"dnkqoe"}

  ]}  

Я не знаю, нужно ли делать массив там?Но мне нужно прочитать файл еще раз в будущем и получить идентификатор элементов, чтобы удалить их на стороне клиента или отредактировать их.

Спасибо за помощь!

1 Ответ

0 голосов
/ 02 февраля 2019

попробуйте это:

client.on('message', function(value, date, descr, tags) {
        console.log('message: ' + value, date, descr, tags );

        // exp object
        var exp = {id:id,value:value,date:date,tags:tags}

        expArr[exp.id] = exp;
        id++;
        console.log(exp.id);



        fs.readFile('expenses.json', function (err, data) {
             var json = JSON.parse(data);
             //      _------- add expArray
             json.expArray.push(exp);
             console.log(json);
             fs.writeFile("expenses.json", JSON.stringify(exp), 
             function(err){
                if (err) throw err;
                console.log('The data was appended to file!');
              });

        })

    });
...