Узел: Как сделать Pu sh Данные в Json Файл ... data.pu sh Не работает - PullRequest
0 голосов
/ 29 апреля 2020

Я хочу добавить sh некоторые данные в файл json, и данные поступают от пользователя, у меня есть данные. json файл

Мой код:

var router = express.Router();
var data = require('./../public/json/data.json')
router.post('/addTask', (req, res) => {
    var last = data[data.length - 1]
    newTask = {
        "id": Number(last.id) + 1,
        "task": req.body.task,
        "date": req.body.date,
        "category": req.body.category,
        "complited": false
    };
    data.push(newTask)
    res.json(data)

})

data. json:

[
{
    "id": "3",
    "task": "Attend a Training",
    "date": "2020-04-20",
    "category": "Office Task",
    "complited": true
},
{
    "id": "4",
    "task": "Prepration of Exam",
    "date": "2020-04-10",
    "category": "Collage Task",
    "complited": true
},
{
    "id": "5",
    "task": "Write Assignments",
    "date": "2020-04-10",
    "category": "Collage Task",
    "complited": true
}
]

я проверил это в почтальоне в выводе почтальона, он отлично работает, это данные pu sh и показывает правильные данные, но когда я проверил свои данные. json файл его Не обновлено. В чем причина, что позвольте мне показать вывод

Почтальон:

Postman Output

data. json File

data.jsonFile
Я также пытаюсь:
data.push(newTask)
res.json(data)
data=data

, но он даже не работает
Может кто-нибудь решить эту проблему? или есть подсказка?

1 Ответ

2 голосов
/ 29 апреля 2020

Важно понимать, что загрузка файла JSON с require не дает вам ссылку на файл. Вместо этого Node прочитает файл JSON и создаст из него объект JavaScript (вероятно, используя что-то похожее на JSON.parse).

Таким образом, переменная data в вашем коде - это не фактический файл data.json, а переменная, которая содержит содержимое data.json. Поэтому, когда вы изменяете data, вы изменяете только те данные, которые у вас есть в памяти, а не файл. Чтобы сохранить изменения в файле, вам необходимо снова записать обновленные данные внутри data в файл data.json. Вы можете сделать это с помощью функции fs.writeFile следующим образом:

fs.writeFile('data.json', JSON.stringify(data), 'utf8', callback);

https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_options_callback

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...