[Node.js] mongoose schema
Example 1:
import mongoose from 'mongoose'
const itemSchema = new mongoose.Schema(
{
name: {
type: String,
required: true,
trim: true,
maxlength: 50
},
status: {
type: String,
required: true,
enum: ['active', 'complete', 'pastdue'],
default: 'active'
},
notes: String,
due: Date,
createdBy: {
type: mongoose.SchemaTypes.ObjectId,
ref: 'user',
required: true
},
list: {
type: mongoose.SchemaTypes.ObjectId,
ref: 'list',
required: true
}
},
{ timestamps: true }
)
itemSchema.index({ list: 1, name: 1 }, { unique: true })
export const Item = mongoose.model('item', itemSchema)
Example 2:
import mongoose from 'mongoose'
const listSchema = new mongoose.Schema(
{
name: {
type: String,
required: true,
trim: true,
maxlength: 50
},
description: String,
createdBy: {
type: mongoose.SchemaTypes.ObjectId,
ref: 'user',
required: true
}
},
{ timestamps: true }
)
listSchema.index({ user: 1, name: 1 }, { unique: true })
export const List = mongoose.model('list', listSchema)
Example 3:
import mongoose from 'mongoose'
import bcrypt from 'bcrypt'
const userSchema = new mongoose.Schema(
{
email: {
type: String,
required: true,
unique: true,
trim: true
},
password: {
type: String,
required: true
},
settings: {
theme: {
type: String,
required: true,
default: 'dark'
},
notifications: {
type: Boolean,
required: true,
default: true
},
compactMode: {
type: Boolean,
required: true,
default: false
}
}
},
{ timestamps: true }
)
userSchema.pre('save', function(next) {
if (!this.isModified('password')) {
return next()
}
bcrypt.hash(this.password, 8, (err, hash) => {
if (err) {
return next(err)
}
this.password = hash
next()
})
})
userSchema.methods.checkPassword = function(password) {
const passwordHash = this.password
return new Promise((resolve, reject) => {
bcrypt.compare(password, passwordHash, (err, same) => {
if (err) {
return reject(err)
}
resolve(same)
})
})
}
export const User = mongoose.model('user', userSchema)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2020-08-22 [Machine Learning] Polynomial Regression
2020-08-22 [Machine Learning] Gradient Descent in Practice I - Feature Scaling
2020-08-22 [Machine Learning] Gradient Descent For Multiple Variables
2019-08-22 [Angular] Lazy Load CSS at runtime with the Angular CLI
2018-08-22 [Java Spring] Spring Annotation Configuration Using XML
2018-08-22 [Jest] Automate your migration to Jest using codemods
2017-08-22 [D3] Reuse Transitions in D3 v4