'use strict'; const Schema = require('mongoose').Schema; const metaPlugin = require('naf-framework-mongoose-free/lib/model/meta-plugin'); const { ObjectId } = require('mongoose').Types; const column = new Schema( { title: { type: String, required: true }, // 字段名,必须是英文 type: { type: String, default: 'String' }, // 字段类型,默认:String required: { type: Boolean, default: false }, // 是否必填,默认:否 index: { type: Boolean, default: false }, def: { type: String }, // 默认值 remark: { type: String }, }, { _id: false, } ); // 字段表 const table = { name: { type: String, required: true }, // 表名 name_zh: { type: String, required: true }, // 表中文名 project: { type: ObjectId, required: true }, // 项目 columns: [column], // 字段列表 remark: { type: String }, }; const schema = new Schema(table, { toJSON: { virtuals: true } }); schema.index({ id: 1 }); schema.index({ name: 1 }); schema.index({ project: 1 }); schema.index({ 'meta.createdAt': 1 }); schema.plugin(metaPlugin); module.exports = (app) => { const { mongoose } = app; return mongoose.model('Table', schema, 'table'); };