猫鼬鉴别符如何对数据库有帮助?

And*_*rew 3 mongoose mongodb node.js

你好,我正在学习mongodb。我开始认识mongoose中的鉴别器。我试图从文档方面理解它,但并没有很好地理解。有人可以用更好的方式解释吗?谢谢

shi*_*kar 5

举个例子,您的项目有两个角色,一个是业务用户,第二个是普通用户。确保业务用户应该有一些额外的字段,例如营业时间,费用,入住率等,而您不会喜欢普通用户文档中的那些字段。那么您可以通过分隔键“ userType”创建一个单独的“业务”模型来扩展“用户”模型,并在其上触发所有业务逻辑。

var mongoose = require("mongoose");
var Schema = mongoose.Schema;

var userSchema = new Schema({
    name: {
        type: String,
        required: true,
        message: 'Name is required',
    }, 
    {
        timestamps: {
            createdAt: 'created',
            updatedAt: 'updated'
        },
     discriminatorKey: 'userType',
        id: false,
        toJSON: {
            getters: true,
            virtuals: true
        },
        toObject: {
            getters: true,
            virtuals: true
        }
    }
});




var businessSchema= new Schema({
        charges: {
            type: Number,
            default:  20
        },
})

module.exports =    mongoose.model('User', userSchema)
module.exports =  User.discriminator('Business',businessSchema );


// in business logic/ controller try and debug results
var mongoose = require('mongoose');
const User = mongoose.model("User");
const Business = mongoose.model("Business");

User.findOne({}, (err, user)=>{
    console.log(err, user);
})

Business.findOne({}, (err, biz)=>{
    console.log(err, biz);
})
Run Code Online (Sandbox Code Playgroud)

通知biz具有用户的所有属性+一些其他字段。在实现逻辑时也很容易理解。