这是我自己写的一个根据模型构建数据的小工具,小轮子,和大家分享下 ~

这个工具不是什么高大上的工具,是定义一个接口数据模型,该模型是面向人类和机器通用较友好的 API 文档。

根据自定义的 schema 模型,构建业务返回的数据,功能包括:

  • 模型文件解析
  • 模型数据默认赋值
  • 规则校验
  • ...(更多功能待挖掘,嘿嘿)

源码地址: https://github.com/aydenuse/s...

  1. 定义数据模型
{
    "title": "user", 
    "description": "用户数据模型",
    "type": "object",
    "properties": {
        "id": {
            "type": "string",
            "dValue": ""
        },
        "name": {
            "type": "string",
            "dValue": ""
        },
        "age": {
            "type": "integer",
            "dValue": 0
        },
        "tall": {
            "type": "number",
            "dVallue": 0,
            "minimum": "1.40",
            "maximum": "3.00"
        },
        "status": {
            "type": "integer",
            "dValue": 0,
            "enumValue": [0, 1]
        },
        "tag": {
            "type": "array",
            "dValue": []
        },
        "students": {
            "type": "array",
            "dValue": [],
            "itemType": "object",
            "properties": {
                "name": {
                    "type": "string",
                    "dValue": ""
                }
            },
            "required": ["name"]
        },
        "music": {
            "type": "object",
            "dValue": {},
            "properties": {
                "id": {
                    "type": "string",
                    "dValue": ""
                },
                "duration": {
                    "type": "number",
                    "dValue": 0
                }
            },
            "required": ["id", "duration"]
        }
    },
    "required": ["id", "name", "age", "status", "music", "tag", "students", "tall"]
}
  1. 传入要被解析的数据
'use strict'

// 模拟业务数据
const data = {
    id: '5gdv4r4sdadwqjdhhf43546',
    name: '我是王晓武',
    age: '23',
    tag: ['man', 'teacher', 'sport', { id: 1 }],
    _v: '123123',
    music: {

    },
    students: [
        {
            name: 'ayden'
        }
    ],
    tall: 1.89
}

const schemaParser = require('./schema-parser')
const schema = new schemaParser()
schema.init()

const result = schema.build({ data: data, title: 'user' })

console.log(result) 
  1. result 被解析结果如下:
//
{
  id: '5gdv4r4sdadwqjdhhf43546',
  name: '我是王晓武',
  age: 23,
  status: 0,
  music: { id: '', duration: 0 },
  tag: [ 'man', 'teacher', 'sport', { id: 1 } ],
  students: [ { name: 'ayden' } ],
  tall: 1.89
}

Ayden
85 声望2 粉丝

I'd rather be undefined than null.


« 上一篇
重温 Object