Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.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
mongoose和node.js的多态用户模型_Node.js_Mongodb_Mongoose_Polymorphic Associations - Fatal编程技术网

mongoose和node.js的多态用户模型

mongoose和node.js的多态用户模型,node.js,mongodb,mongoose,polymorphic-associations,Node.js,Mongodb,Mongoose,Polymorphic Associations,我正在用mean.js样板制作一个应用程序。它是一个招聘引擎,用户是雇主和候选人。现在,雇主和候选人应该作为单独的文档存储,每个用户必须只有一个雇主或候选人,因为每个候选人或雇主都需要使用用户对象登录 我在rails和postgresql中这样做: ## User belongs_to :profileable, :polymorphic => true ## Candidate and Employer has_one :user, :as => :profileable

我正在用mean.js样板制作一个应用程序。它是一个招聘引擎,用户是雇主和候选人。现在,雇主和候选人应该作为单独的文档存储,每个用户必须只有一个雇主或候选人,因为每个候选人或雇主都需要使用用户对象登录

我在rails和postgresql中这样做:

## User
  belongs_to :profileable, :polymorphic => true

## Candidate and Employer
  has_one :user, :as => :profileable
对于mongoose,这就是我迄今为止使用“mongoose schema extend”包所做的工作:

var extend = require('mongoose-schema-extend');

var UserSchema = new Schema({
    email: {
        type: String
    },
    password: {
        type: String
    }
}, { collection: 'users', discriminatorKey : '_type' });


var CandidateSchema = UserSchema.extend({
    Experience: {
        type: Number
    }
});

var EmployerSchema = user.user.extend({
    companyName: {
        type: String
    }
});
上述代码可以工作,但在mongodb中,仅为将_type属性设置为候选或雇主的用户创建文档

我认为它应该做的是将应聘者、雇主和用户存储为单独的文档。后来我不得不将雇主与公司和工作联系起来。另外,我需要用不同的标准分别询问应聘者和雇主


实现功能的最佳方法是什么?

可以使用mognoose鉴别器处理scenairo

根据猫鼬文件:

鉴别器是一种模式继承机制。它们使您能够在同一基础MongoDB集合上拥有多个模式重叠的模型

关于鉴别器的教程不多,但我发现以下链接很有用:


谢谢

你有什么收获吗?我也想做多态关系,我也是Rails的背景。