🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ### mongoose 复杂模型 #### 仿知乎个人资料建模 * [ ] 分析 ![](https://box.kancloud.cn/7ed7f97e48325e7b4df45a7f1dd9dbf5_982x668.png) ~~~ // 引入 mongoose const mongoose = require('mongoose') const { Schema, model } = mongoose // 创建用户Schema const userSchema = new Schema({ __v: { type: Number, select: false }, // 用户名 username: { type: String, required: true }, // 登录密码 password: { type: String, required: true, select: false }, // 用户头像 avatar: { type: String }, // 用户性别 gender: { type: String, required: true, enum: ['male', 'female', 'secrecy'], default: 'secrecy', }, // 个人简介 introduce: { type: String }, // 居住地 residence: { // 字符串数组 type: [{type: String}] }, //行业 industry: { type: String }, // 职业经历 Career:{ type: [{ // 公司名称 corporate: {type: String}, // 职位 job: {type: String} }] }, // 教育经历 experience: { type: [{ // 机构名称 title: {type: String}, // 专业方向 major: {type: String}, // 学历 enum: [1,2,3,4,5] 高中,本科,硕士,博士 Education: { type: Number, enum: [1,2,3,4,5]}, // 入学年份 enrollment_year: { type: Number}, // 毕业年份 graduation_year: {type: Number} }] } }) // 生成用户模型 module.exports = model('User', userSchema) ~~~ ***** * [ ] 建模思路 1. 性别建模 ![](https://box.kancloud.cn/cb92cdd30998849ceb69490baebcac06_393x134.png) ``` // 用户性别 gender: { type: String, required: true, enum: ['male', 'female', 'secrecy'], default: 'secrecy', } ``` >[danger] type: String 存储为字符串 > enum 可枚举类型,男 or 女 or 保密 > default 默认值为保密 ***** 2. 居住地类型建模 ![](https://box.kancloud.cn/aae62df21fb0100d9b1824f8f0581849_443x206.png) ``` // 居住地 residence: { // 字符串数组类型 type: [{type: String}] } ``` >[danger] 居住地,可以看出,前端传过来的数据是一个数组,里面包含多个 > 所以设计为字符串数组类型 ***** 3. 行业选择建模 ![](https://box.kancloud.cn/b9b2405c27a636242a56a3c15e58dbc7_395x179.png) ``` //行业 industry: { type: String } ``` ***** 4. 职业经历建模 ![](https://box.kancloud.cn/651e9b15dbcdb6322b9dc1199fe1de20_744x203.png) ``` // 职业经历 Career:{ type: [{ // 公司名称 corporate: {type: String}, // 职位 job: {type: String} }] }, ``` ***** 5. 教育经历建模 ![](https://box.kancloud.cn/cfeded8584d783cc075b1a2a3b863ad9_766x151.png) ``` // 教育经历 experience: { type: [{ // 机构名称 title: {type: String}, // 专业方向 major: {type: String}, // 学历 enum: [1,2,3,4,5] 高中,本科,硕士,博士 Education: { type: Number, enum: [1,2,3,4,5]}, // 入学年份 enrollment_year: { type: Number}, // 毕业年份 graduation_year: {type: Number} }] } ```