代码之家  ›  专栏  ›  技术社区  ›  CodeRonin

在post-node-express中读取和附加

  •  0
  • CodeRonin  · 技术社区  · 7 年前

    我有一个这样的节点应用程序:

    • TLC休息API
      • 应用程序编程接口
        • 分贝
        • 路线

    在db文件夹中,我有一个json文件,名为apartments.json,如下所示:

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

    在Routes文件夹中,我有一个具有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文件。

    1 回复  |  直到 7 年前
        1
  •  0
  •   mandaputtra    7 年前

    您可以使用 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 })
      })
    })
    

    对于confenient,如果你想转到其他文件夹,你应该创建它们的目录名。

    // on the folder
    exports const jsondir = __dirname
    
    module.exports.jsondir = jsondir
    

    只需要它。

        2
  •  0
  •   CodeRonin    7 年前

    似乎JSON调用在post中不起作用,因为stringify()返回[对象对象对象],这是我的解决方案

    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);
    
    推荐文章