是否可以使用猫鼬模式在模式级别定义基于另一个字段的字段?例如,假设我有一个非常简单的架构:const mongoose = require('mongoose')const { Schema } = mongooseconst UserSchema = new Schema({ username: { type: String, required: true, unique: true }, username_lower: { type: String, // calculated: this.username.toLowerCase() }, email: { type: String, required: true, unique: true }, email_lower: { // for case-insensitive email indexing/lookup type: String, // calculated: this.email.toLowerCase() }, password: { type: String, required: true }, password_acceptable: { type: Array, // calculated: [ // this.password.toLowerCase(), // this.password.toUpperCase() // this.password.removeWhiteSpace(), // just an example // ] }})const User = mongoose.model('User', UserSchema)module.exports = User是否有类似于虚拟“计算”字段(我已注释掉)的东西,它允许在保存新文档时自动创建字段?这将非常方便,并且可以减少必须在我的后端路由上手动定义这些字段的混乱。
1 回答
哈士奇WWW
TA贡献1799条经验 获得超6个赞
您可以通过 Pre 中间件功能来完成,了解更多详情
UserSchema.pre('save', function(){
this.username_lower = this.username.toLowerCase();
this.email_lower = this.email.toLowerCase();
// and so on ...
next();
});
添加回答
举报
0/150
提交
取消