6

Teamaと aの 2 つのスキーマがありMatchます。Team Schemaを使用して、 内のチームを識別したいと考えていますMatch Schema。これまでのところ、これが私のチームとマッチ JS ファイルです。チーム スキーマをマッチ スキーマにリンクして、ホーム チームまたはアウェイ チームを簡単に識別できるようにし、マッチ スキーマに実際のチーム オブジェクトを格納したいと考えています。

このようにして、たとえばホームチームを次のように参照できますMatch.Teams.home.name = England(これはもちろん単なる例です)

Team.js

'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でやろうとしていることです

'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);
4

3 に答える 3

3

解決策: スキーマを使用するモデルではなく、実際のスキーマを使用します。

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

module.exports = {
    model: mongoose.model('Team', Team),
    schema: Team
};

そして、モデルの代わりに直接var definition = require('path/to/js');使用しますdefinition.schema

于 2013-02-06T13:52:14.353 に答える
2

スキーマをネストしたくありません。

Mongoose で Population を試してみてください: http://mongoosejs.com/docs/populate.html これで問題は解決します。

于 2014-04-30T22:09:04.290 に答える