首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >链接2个mongoose架构

链接2个mongoose架构
EN

Stack Overflow用户
提问于 2013-02-06 21:49:14
回答 3查看 10.3K关注 0票数 6

我有两个模式,一个Team和一个Match。我想使用Team Schema来识别Match Schema中的团队。到目前为止,这是我的团队和Match JS文件。我希望将Team Schema链接到我的Match Schema,这样我就可以简单地识别主队或客队,这样我就可以在Match Schema中存储一个实际的team对象。

这样,我可以将主队称为Match.Teams.home.name = England (当然,这只是一个例子)。

Team.js

代码语言:javascript
复制
'use strict';

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

var validatePresenceOf = function(value){
  return value && value.length; 
};

var getId = function(){
  return new Date().getTime();
};

/**
  * The Team schema. we will use timestamp as the unique key for each team
  */
var Team = new Schema({
  'key' : {
    unique : true,
    type : Number,
    default: getId
  },
  'name' : { type : String,
              validate : [validatePresenceOf, 'Team name is required'],
              index : { unique : true }
            }
});

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

下面是我想要对Match.js做的事情

代码语言:javascript
复制
'use strict';

var util = require('util');
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var TeamSchema = require('mongoose').model('Team');

var validatePresenceOf = function(value){
  return value && value.length; 
};

var toLower = function(string){
  return string.toLowerCase();
};

var getId = function(){
  return new Date().getTime();
};

/**
  * The Match schema. Use timestamp as the unique key for each Match
  */
var Match = new Schema({
  'key' : {
    unique : true,
    type : Number,
    default: getId
  },
  'hometeam' : TeamSchema,
  'awayteam' : TeamSchema
});

module.exports = mongoose.model('Match', Match);
EN

回答 3

Stack Overflow用户

发布于 2013-02-06 21:52:14

您的解决方案:使用实际的模式,而不是使用该模式的模型:

代码语言:javascript
复制
module.exports = mongoose.model('Team', Team);

代码语言:javascript
复制
module.exports = {
    model: mongoose.model('Team', Team),
    schema: Team
};

然后使用var definition = require('path/to/js');,并直接使用definition.schema而不是模型

票数 3
EN

Stack Overflow用户

发布于 2014-05-01 06:09:04

您不希望嵌套模式。

在Mongoose中尝试Population:http://mongoosejs.com/docs/populate.html,它将解决您的问题。

票数 2
EN

Stack Overflow用户

发布于 2020-05-24 16:35:27

尝试在Match.js中使用Schema.Types.ObjectId

hometeam: { type: Schema.Types.ObjectId, ref: 'Team' } awayteam: { type: Schema.Types.ObjectId, ref: 'Team' }

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14730676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档