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

标签 node.js mongodb mongoose polymorphic-associations

我正在使用 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 鉴别器处理。

根据 Mongoose 文档:

Discriminators are a schema inheritance mechanism. They enable you to have multiple models with overlapping schemas on top of the same underlying MongoDB collection.

我找不到很多关于鉴别器的教程,但这里有一个我觉得有用的链接: http://thecodebarbarian.com/2015/07/24/guide-to-mongoose-discriminators

谢谢

关于node.js - 使用 mongoose 和 node.js 的多态用户模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24561182/

相关文章:

node.js - swagger 上传后处理 csv 文件 - 没有这样的文件或目录

mongodb - Meteor - 如何指定要返回和排序的字段?

javascript - 将 Json 放入 Web Angular 页面

mongodb - sails 船。在 sails-mongo (mongodb) 上创建(和管理)索引的最佳方式

node.js - 使用 Nodejs 从 MongoDB 中删除项目

javascript - 如何在 Mongoose 中实现一对一的关系和杠杆作用?

javascript - postman 仅向 Mongoose 嵌套级别 1 发帖

javascript - 如何检查 selenium 服务器的当前状态(使用 Node.js 的 API?还有别的吗?)

node.js - 从 Pocket API (oAuth) 检索数据

javascript - 如果所有数据库操作都通过 Mongoose 完成,注入(inject)仍然是一个问题吗?