ZeXu_
侠客
侠客
  • 最后登录2020-10-29
  • 发帖数12
阅读:282回复:0

[vue]前后端分离 8:后端 JSON添加数据

楼主#
更多 发布于:2020-08-11 18:28


前后端分离 8:后端 JSON添加数据

Author: ZeXu
Soft: WebStorm || postman
前期准备:
  1. fs.access()
  2. fs.writeFile()
  3. JSON.parse() && JSON.stringify()
  4. 增:post、删:delete、改:put






Add


``` javascript let parseData = JSON.parse(data)
    parseData.unshift(req.body.value) let stringifyData = JSON.stringify(parseData)
```
注意:JSON转换数据类型.push()这样的操作不用赋值,如果赋值,被赋值的变量会是数字

``` javascript
    company.post('/news/addNews', (req, res, next) => { // # 在 追加内容时,先判断该文件是否存在 let filePath = path.join(__dirname, '../company/news/news.json')
        fs.access(filePath, err => { // console.log(err ? '目录/文件不存在' : '文件存在,可以进行读写') if (!err) {
                fs.readFile(filePath, 'utf-8', (err, data) => { if (data) { let parseData = JSON.parse(data)
                        parseData.unshift(req.body.value)
                        parseData.forEach((item, index) => item.No = index) // # 添加编号 let stringifyData = JSON.stringify(parseData)
    
                        fs.writeFile(filePath, stringifyData, err => { if (!err) {
                               res.send({
                                   massage: '新增成功', code: '200' })
                           }
                        })
                    }
                })
            }
        })
    })
```


Delete || UpDate


``` javascript
const express = require('express');
const company = express.Router();
const path = require('path');

const fs = require('fs');

const yaml = require('js-yaml');

let ADU = (req, res, filePath, operation) => {
    filePath = path.join(__dirname, '../company' + filePath);

    fs.access(filePath, err => { if (!err) {
            fs.readFile(filePath, 'utf-8', (err, data) => { if (data) {
                    let parseData = JSON.parse(data);
                    let message = null; if (operation === 'add') {
                        parseData.unshift(req.body.value);
                        message = '新增成功' } else if (operation === 'delete' || operation === 'put') {
                        parseData.some((item, index) => {
                        // # 'item.No.toString()' 这么做是因为 delete 中 req.query.No 的参数是字符串 if (item.No.toString() === req.query.No || item.No === req.body.No) { if (operation === 'delete') {
                                    parseData.splice(index, 1)
                                    message = '删除成功' } else {
                                    parseData[index] = req.body.value
                                    message = '修改成功' }
                            }
                        })
                    }

                    parseData.forEach((item, index) => item.No = index); // # 编号 重排
                    let stringifyData = JSON.stringify(parseData);

                    fs.writeFile(filePath, stringifyData, err => { if (!err) {
                            res.send({ massage: message, code: '200' })
                        }
                    })
                }
            })
        }
    })
};

// # 新增
company.post('/news/addNew', (req, res, next) => {
    ADU(req, res, '/news/news.json', 'add')
});

// # 删除
company.delete('/news/deleteNew', (req, res, next) => {
    ADU(req, res, '/news/news.json', 'delete')
})

// # Update
company.put('/news/putNew', (req, res, next) => {
    ADU(req, res, '/news/news.json', 'put')
})
```
游客


返回顶部

公众号

公众号