我们可以将 Mongoose 模式模型的属性定义为另一个模型吗

Posted

技术标签:

【中文标题】我们可以将 Mongoose 模式模型的属性定义为另一个模型吗【英文标题】:Can we define property of Mongoose schema model as another model 【发布时间】:2018-11-26 02:30:45 【问题描述】:

我正在使用 mongoose 为我的应用程序创建模型, 基本上在创建 2 个这样的模型时。

// user.js

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

var user = new Schema(
  $key: String,

  us_first: String,
  us_family: String,
  displayName: String,
  email: String,
);

module.exports = mongoose.model('user', user);



// project.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var project = new Schema(
  $key: String,
  project_creator: String,

);

module.exports = mongoose.model('project', project);

现在我想要的是project 模型,project_creator 的类型应该是user 模型(现在它只是一个字符串类型)。

我问这个是因为当我使用 Angular 和 Typescript 做前端时,我可以像这样声明项目模型:

// user.ts
export class User 
    $key: string;    
    us_first: string;
    us_family: string;
    displayName: string;
    email: string;

// project.ts
export class Project 
  $key: string;
  project_creator: User;

所以我想知道我是否可以在猫鼬中声明同样的东西

【问题讨论】:

你试过project_creator: user 吗?而module.exports 会覆盖之前导出的内容,因此使用两次几乎没有意义。 你考虑过在猫鼬中使用人口吗?链接:mongoosejs.com/docs/populate.html 【参考方案1】:

你可以试试这个方法:

更具体的解释在这里:http://mongoosejs.com/docs/populate.html

export class Project 
  $key: string;
  project_creator:  type: mongoose.Schema.Types.ObjectId, ref: 'User'

【讨论】:

以上是关于我们可以将 Mongoose 模式模型的属性定义为另一个模型吗的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose

从 Mongoose 模型中获取模式属性

使用外部文件中的模型填充 Mongoose 模式属性

mongodb模式模型设计及编码-Mongoose

具有特定值的 Mongoose 模式属性

应用Mongoose开发MongoDB模型(models)