2

I'm returning a javascript object and I'm trying to append it to a json file using fs.appendFile. When I test the output of the file at, json formatter website, I get the error Multiple JSON root elements. Can someone please show me what I'm doing wrong here.

var data = {
  userProfile: {
    name: "Eric"
  },
  purchases: [
    {
      title: "book name"
    },
    {
      title: "book name two"
    }
  ]
};

fs.appendFile("data.json", JSON.stringify(data, null, 2), function(err) {
  if (err) {
    console.log("There was an error writing the backup json file.", err);
  }
  console.log("The backup json file has been written.");
});
bp123
  • 3,217
  • 8
  • 35
  • 74
  • I believe this question is a duplicate of [https://stackoverflow.com/questions/36093042/how-do-i-add-to-an-existing-json-file-in-node-js](https://stackoverflow.com/questions/36093042/how-do-i-add-to-an-existing-json-file-in-node-js) – BoyePanthera Dec 20 '19 at 02:42

1 Answers1

3

You neede to open your file, parse the JSON, append your new data to the old data, transform it back into a string and save it again.

var fs = require('fs')

var newData = {
  userProfile: {
    name: "Eric"
  },
  purchases: [
    {
      title: "book name"
    },
    {
      title: "book name two"
    }
  ]
};

fs.readFile('data.json', function (err, data) {
    var json = JSON.parse(data)
    const newJSON = Object.assign(json, newData)
    fs.writeFile("data.json", JSON.stringify(newJSON))
})
ittus
  • 21,730
  • 5
  • 57
  • 57