这是我参与「掘金日新计划 · 8 月更文挑战」的第28天,点击查看活动详情
JSON 格式
- JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
- JSON 是轻量级的文本数据交换格式
目录结构
├── app // 项目中的配置
│ ├── controller // 控制层
│ │ ├── home.js
│ │ └── user.js
│ ├── public // 公共部分
│ └── router.js // 路由
├── extend // 拓展工具
│ │ helper.js // 帮助
├── config // 项目配置
│ ├── config.default.js
│ └── plugin.js // 插件
├── db // 数据 json
│ ├── user.json
help.js函数的封装
返回结构
在 helper 中可以引入一个 jsonFormat 的工具,如果返回status是 0 那么就是抛出异常
const dayjs = require("dayjs");
module.exports = class Helper {
// 处理 json 数据,默认是成功
static async jsonFormat(row, status = 1) {
// 如果是失败的情况下,则返回 0
if (status === 0) {
return {
status: 0,
message: row,
timestamp: dayjs().format("YYYY-MM-DD HH:mm:ss"),
success: false,
};
}
return {
status: 1,
message: "成功",
data: row,
timestamp: dayjs().format("YYYY-MM-DD HH:mm:ss"),
success: true,
};
}
}
this.ctx.helper.jsonFormat('请求失败',0)
获取请求参数
/**
*
* 可以使用ctx.params获取get或post请求参数
*/
module.exports = () => {
return async function params(ctx, next) {
ctx.params = {
...ctx.query,
...ctx.request.body
}
await next()
}
}
db
这里的 db 文件夹,可以帮他想象出一个数据仓库,每一个 json 就是一张数据库的表
db/user.json
[{
"id":0,
"name":"张三",
"age": 18
},
{
"id":1,
"name":"李四",
"age": 20
}]
这时候其实你也可以通过db/*.json来存储各种表的数据,在未来如果有数据库了,也可以存储在MongoDB 或者 mysql 数据中作为数据转换的过度与拓展。
构建 CURD 的封装
首先 JSON 是什么,它其实就是一组数组对象首先要获取到这个 json 数据对吧
json获取数据操作
extend/helper.js
const { readFile, writeFile } = require("fs"); // 解构出并加载fs模块中的两个方法
const { join } = require('path')
// 获取到 json 数据的位置
const path = (name) => join(__dirname, `../../db/${name}.json`)
module.exports = class Helper {
// 读取数据
static async readFile(name) {
const filename = path(name);
return new Promise((resolve, reject) => {
readFile(filename, "utf-8", (err, data) => {
if (err) reject(err);
const res = JSON.parse(data); // 把JSON转成JS数组
console.log(res);
resolve(res);
});
});
}
// 写入数据
static async writeFile(name, param) {
const filename = path(name);
return new Promise((resolve,reject) => {
writeFile(filename, JSON.stringify(param), (err) => {
if (err) reject(err);
resolve("修改成功");
});
});
}
};
总结JSON 作为数据源的处理
其实 JSON 的 CURD 本质上,就是就是针对于数组的CURD 方法,然后读写进入文件,这样的话,就可以持久化保持数据。