const fs = require('fs') const _mappings = () => { const models = ['save'] for(const model of models) { _mapping(model) } } const _mapping = modelName => { const json = `json/${modelName}.json` const sql = `sql/${modelName}.sql` const modelObj = _getModelObj(json) const sqls = [] _conver(sqls, modelObj, '') saveSql(sql, sqls) console.log(sqls) } const _getModelObj = uri => { const data = fs.readFileSync(uri) return JSON.parse(data) } const _conver = (sqls, obj, pKey) => { const sql = [] for(const key in obj) { // 内置字段 if(key.startsWith('_') && typeof obj[key] !== 'object') { continue } if(obj[key] instanceof Array) { sqls.push({ key, pKey, type: 'Array' }) for(const item of obj[key]) { sqls.push({ key: key + '-object', pKey: key, type: 'object' }) _conver(sqls,item, key + '-object') } continue } if(typeof obj[key] === 'object') { sqls.push({ key, pKey, type: 'object' }) _conver(sqls, obj[key], key) continue } sqls.push({ key, pKey, type: 'element', name: obj[key], }) } } const saveSql = (uri, sqls) => { let sql = `insert into mapping(key, pKey, type, name) values ` sql += sqls.map(item => { return `("${item.key}","${item.pKey}","${item.type}","${item.name || ''}")` }).join(',') sql += ';' fs.writeFileSync(uri, sql) } _mappings()