2013-02-06 7 views
5

Ich habe zwei Schemas, eine Team und eine Match. Ich möchte die Team Schema verwenden, um die Teams in der Match Schema zu identifizieren. Bis jetzt, hier sind meine Team und Match JS Dateien. Ich möchte das Team-Schema mit meinem Match-Schema verknüpfen, um das Heim- oder Auswärts-Team einfach identifizieren zu können und damit im Match-Schema ein Team-Objekt zu speichern.Verknüpfen von 2 Mongoeschemata

So kann ich an die Heimmannschaft zum Beispiel als Match.Teams.home.name = England beziehen kann (dies ist nur ein Beispiel natürlich)

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

Und hier ist, was ich versuche zu tun 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); 

Antwort

2

Ihre Lösung: das eigentliche Schema verwenden, anstatt ein Modell, das das Schema verwendet:

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

Um

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

und dann var definition = require('path/to/js');, die, und definition.schema anstelle eines Modells verwenden, um direkt

+0

Ich habe die Team-Exporte geändert, wie Sie gesagt haben. In der Datei Match.js habe ich jetzt 'var definition = require ('Team.js');' und ich speichere 'hometeam' als' definition.schema', aber ich bekomme den Fehler, dass 'team.js' nicht gefunden werden kann , irgendeine Idee? – germainelol

+0

Ich habe auch versucht, nur Team nicht Team.js – germainelol

+0

Sorry, um erneut zu kommentieren, aber ich habe dies behoben, indem Sie den vollständigen Pfad und jetzt 'TypeError: Undefined Typ bei' hometeam' und fragen mich, ob ich Verschachtelung Schemas – germainelol