2013-02-06 22 views
5

İki Şemam var, bir Team ve bir Match. Match Schema'daki Ekipleri tanımlamak için Team Schema kullanmak istiyorum. Şimdiye kadar, burada benim Takım ve Maç JS dosyaları. Takım Şeması'nı Eşleşme Şemasına bağlamak istiyorum, böylece evden ya da uzak takımdan kolayca tanımlayabilirim ve böylece Şema Şemasına gerçek bir Takım nesnesinde yer veriyorum.2 mongoose şemalarını bağlama

Burada

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

Ve (bu tabii ki sadece bir örnektir) Match.Teams.home.name = England olarak örneğin ev sahibi takıma atıfta Bu şekilde ben yapmaya çalışıyorum budur 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); 

cevap

2

Çözümün:

: ziyade şemayı kullanan bir modelden daha gerçek şemayı kullanın
module.exports = mongoose.model('Team', Team); 

yerine Sen yuva şemalar istemiyorum doğrudan

+0

Ben Takım ihracatını değişti. Match.js dosyasında şimdi var tanım = ('Team.js') gerektiren 'var;' ve 'definition.schema'' olarak hometeam' depolamak.Bu ama 'modül Team.js' bulamadığını hatayı alıyorum , Herhangi bir fikir? – germainelol

+0

Ive ayrıca Team not Team.js – germainelol

+0

'u da eklemeyi denedim. Tekrar yorumda bulunduğum için üzgünüm, ama bunu tam yolunu belirleyerek düzeltdim ve şimdi "hometeam" de "TypeError: Undefined" türünü alıyorum ve yuvalama şemaları olup olmadığımı soruyorum – germainelol

1

bir modelin definition.schema kullanın ve

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

ve sonra var definition = require('path/to/js'); belirleyin.

Mongoose'taki Populasyonu Dene: http://mongoosejs.com/docs/populate.html Sorununuzu çözecek. Eğer söylediği gibi