Node.js Mongoose-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

我使用的是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 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 });