Node.js Mongoose-1模式的多个模型
我使用的是mongoose v5.2.17。 我想知道是否有可能将多个模型映射到1模式。 例如,我有以下模型Node.js Mongoose-1模式的多个模型,node.js,mongodb,mongoose,mongoose-schema,Node.js,Mongodb,Mongoose,Mongoose Schema,我使用的是mongoose v5.2.17。 我想知道是否有可能将多个模型映射到1模式。 例如,我有以下模型 const mongoose = require('mongoose'); const validator = require('validator'); const jwt = require('jsonwebtoken'); const _ = require('lodash'); const bcrypt = require('bcryptjs'); const UserSche
const mongoose = require('mongoose');
const validator = require('validator');
const jwt = require('jsonwebtoken');
const _ = require('lodash');
const bcrypt = require('bcryptjs');
const UserSchema = new mongoose.Schema({
email: {
type: String,
required: true,
trim: true,
minlength: 1,
unique: true,
validate: {
validator: validator.isEmail,
message: '{VALUE} is not a valid email',
},
},
password: {
type: String,
required: true,
minlength: 6,
},
isTrialUser: {
type: Boolean,
default: true,
},
isAdminUser: {
type: Boolean,
default: false,
}
});
UserSchema.methods.toJSON = function () {
const user = this;
const userObject = user.toObject();
return _.pick(userObject, ['_id', 'email', 'isTrialUser']);
};
UserSchema.pre('save', function (next) {
const user = this;
if (user.isModified('password')) {
bcrypt.genSalt(10, (err, salt) => {
bcrypt.hash(user.password, salt, (hashErr, hash) => {
user.password = hash;
next();
});
});
} else {
next();
}
});
const User = mongoose.model('User', UserSchema);
module.exports = { User, UserSchema };
我是否可以创建另一个AdminModel,其中可以使用特定于管理员的方法?
我还想从AdminModel返回toJSON方法中的所有数据
请让我知道这是否可行,或者是否有更好的方法执行此任务
谢谢
Damien如果我理解正确,您希望继承AdminModel中的UserModel,并用额外的方法等装饰该UserModel。为此,您可以使用
util.inherits
(或所谓的Mongoose鉴别器),如下所示:
您可以在中阅读更多关于它的信息
还有一篇关于的好文章,如果我理解正确,您希望继承AdminModel中的UserModel,并用额外的方法装饰该UserModel等。为此,您可以使用
util.inherits
(或所谓的Mongoose鉴别器),如下所示:
您可以在中阅读更多关于它的信息
还有一篇关于
function BaseSchema() {
Schema.apply(this, arguments);
this.add({
name: String,
createdAt: Date
});
}
util.inherits(BaseSchema, Schema);
var UserSchema = new BaseSchema();
var AdminSchema = new BaseSchema({ department: String });