Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 猫鼬鉴别器在数据库中如何发挥作用?_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js 猫鼬鉴别器在数据库中如何发挥作用?

Node.js 猫鼬鉴别器在数据库中如何发挥作用?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,您好,我正在学习mongodb。我开始了解mongoose中的鉴别器。我试图从文档的角度理解它,但理解得不好。有人能用更好的方式解释吗?? 谢谢举个例子,您的项目有两个角色:一个是业务用户,另一个是普通用户。当然,业务用户应该有一些额外的字段,如开放时间、费用、占用率等,而您不会喜欢普通用户文档中的字段。然后,您可以创建一个单独的模型“业务”,扩展您的 用户模型由一个单独的键“userType”和所有业务逻辑触发 var mongoose = require("mongoose"); var S

您好,我正在学习mongodb。我开始了解mongoose中的鉴别器。我试图从文档的角度理解它,但理解得不好。有人能用更好的方式解释吗??
谢谢

举个例子,您的项目有两个角色:一个是业务用户,另一个是普通用户。当然,业务用户应该有一些额外的字段,如开放时间、费用、占用率等,而您不会喜欢普通用户文档中的字段。然后,您可以创建一个单独的模型“业务”,扩展您的 用户模型由一个单独的键“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);
})

请注意,biz具有用户的所有属性+一些额外字段。在实现逻辑时也很容易理解。

Thnks..基本上使用相同的模式,我们扩展了其他模型模式??是的。而且代码/逻辑看起来也不错,对于mecan u来说,可以更详细地说明鉴别器键??我从我的理解中解释了所有内容,解释得最好..我只想知道关于鉴别器密钥…是否需要给出鉴别器密钥的名称??