讀取與修改的方法
const fs = require('fs'); // promisify 異步處理 const { promisify } = require('util'); const path = require('path'); const readFile = promisify(fs.readFile) const writeFile = promisify(fs.writeFile) // 獲取 json 數據 const getFileData = async (fileName) => { const filePath = path.join(__dirname, `../json/${fileName}.json`) const data = await readFile(filePath, 'utf-8') return JSON.parse(data) } // 修改 json 數據 const setFileData = async (fileName, data) => { const filePath = path.join(__dirname, `../json/${fileName}.json`) const datas = JSON.stringify(data, null, ' ') await writeFile(filePath, datas) } module.exports = { getFileData, setFileData }
使用
const express = require('express'); const router = express.Router(); // 更新 json 數據 const { getFileData, setFileData } = require('../common') // 用戶注冊 router.post('/api/register', async(req, res) => { // 獲取所有用戶信息 const allUserInfo = await getFileData('userData') const allUserName = allUserInfo.map(user => user.userName) const { userName, password, sex } = req.body // 判斷用戶是否已注冊 if (allUserName.includes(userName)) { res.json({ code: 200, data: null, success: false, message: '該用戶已注冊!' }) return } if (!password) { res.json({ code: 200, data: null, success: false, message: '請填寫賬號密碼!' }) return } if (!sex) { res.json({ code: 200, data: null, success: false, message: '請選擇性別!' }) return } allUserInfo.push(req.body) setFileData('userData', allUserInfo) res.json({ code: 200, data: null, success: true, message: '注冊成功!' }) }) module.exports = router;