читать и добавлять внутри почтового узла экспресс - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть приложение узла, структурированное так:

  • tlc-rest-api
    • api
      • db
      • маршруты

Внутри папки db у меня есть файл JSON с именем apartments.json, который выглядит следующим образом:

      [
         {
            "id": 0,
            "address": "Not set"
         },
         {
            "id": 1,
            "address": "Not set"
         }
      ]

В папке маршрутов у меня естьмаршрутизатор с методом post:

const express = require("express");
const router = express.Router();
const apartments = require("../db/apartments.json");

router.post('/', (req, res, next) => {

   // read request
   let apa = {
       id: req.body.id,
       address: req.body.address
   };

   // todo: add new apartment here...

});

module.exports = router;

Чего я хочу добиться - это прочитать файл, создать массив, передать объект apa в этот массив и сохранить обратно файл json

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

Кажется, что вызовы JSON не работают внутри post, потому что stringify () возвращает [object Object], это мое решение

router.post('/', (req, res, next) => {

  let apa = {
      id: req.body.id,
      address: req.body.address
 }

 let apas = [];
 let apartments = require('path/to/json');
 apas.push(apa);
 let str = "[ ";
 for(let i = 0; i < apas.length - 1; i++) {
    strAlt += '{"id": ' + apas[i].id + ', "name": "' + apas[i].name + '"}, ';
}
strAlt += '{"id": ' + apas[apas.length - 1].id + ', "name": "' + apas[apas.length - 
1].name + '"} ] ';
console.log("hard coded stringify: " + strAlt);
fs.writeFile("path/to/json", strAlt, (err) => {
    if(err) throw err;
    console.log("file saved!");
});
console.log(apartments);
res.status(200).send(apa);
0 голосов
/ 29 апреля 2019

Вы можете прочитать файл JSON с модулем fs.

fs.readFile('path/to/json', (data) => {
  const parsed = JSON.parse(data)
  // just imagine that arr is an array that you wan to push
  let newArr;
  for (i = 0; i < arr.length; i++ ) {
    const element = arr[i]
    newArr = parsed.push(element)
  }
  fs.writeFile('path/to/json', JSON.stringify(newArr), (success) => {
    res.send({ success })
  })
})

для удобства, если вы хотите перейти в другую папку, вы должны создать их dirname

// on the folder
exports const jsondir = __dirname

module.exports.jsondir = jsondir

и простотребует этого.

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