Node.js 在Mongoose中保存嵌套模式

Node.js 在Mongoose中保存嵌套模式,node.js,mongodb,mongoose,jsonschema,Node.js,Mongodb,Mongoose,Jsonschema,我试图使用MongooseJS为我的数据库设计以下结构。每个用户将拥有一系列锦标赛。我的问题是,在保存时,数据库将存储除TournamentSchema数组之外的所有内容。它只是一个空数组。我不确定我在这里做错了什么,我已经在这个网站的其他地方找到了 以下是我试图使我的db看起来像什么: User { name : String email : String password : String tournaments : [ {

我试图使用MongooseJS为我的数据库设计以下结构。每个用户将拥有一系列锦标赛。我的问题是,在保存时,数据库将存储除TournamentSchema数组之外的所有内容。它只是一个空数组。我不确定我在这里做错了什么,我已经在这个网站的其他地方找到了

以下是我试图使我的db看起来像什么:

User {
    name : String
    email : String
    password : String

    tournaments : [
        {
            name : String
            location : String
            date : ISO_DATE
            numTeams : NumberInt 
下面是user.js:

 var mongoose = require("mongoose");
 var Schema = mongoose.Schema;
 var Tournament = mongoose.model("Tournament");
 var TournamentSchema = require("./tournament").TournamentSchema;

 var UserSchema = new Schema({
     name : String,
     email : String,
     password : String,
     tournaments : [TournamentSchema]
 });

 mongoose.model("User", UserSchema);
下面是tournament.js

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

var TournamentSchema = new Schema({
    name : String,
    location : String
});

mongoose.model("Tournament", TournamentSchema);
module.exports = TournamentSchema;
下面是我如何在控制器类中实例化一个新用户:

var user = new User({
            name : name,
            email : email,
            password : password,
            tournaments : [
                {
                    name : "Trial by Combat",
                    location : "King's Landing"
                }
            ]
        });

我不完全确定“tournaments:[TournamentScheme]”这一行是否正确地表示该变量将是TournamentScheme的数组。如果有人能找到解决办法,我将非常感激你能告诉我我做错了什么

我解决了这个问题!对于可能有相同问题的任何人:

这一行位于users.js中

var TournamentSchema = require("./tournament").TournamentSchema;
返回未定义,因为我在tournament.js中错误地编写了module.exports行。为了修复它,我将tournament.js中的最后两行更改为一行:

module.exports = mongoose.model("Tournament", TournamentSchema);
该行将正确导出模型对象,以便可以从users.js获取其模式。然后,我将user.js中的上述行更改为:

var tournamentSchema = require("./tournament").schema;
为了测试它,我在控制器类中实例化了一个新的锦标赛,然后将其推送到锦标赛数组:

var t = new Tournament({
        name : "Trial by Combat",
        location : "King's Landing"
    });
var user = new User({
        name : name,
        email : email,
        password : password,
    });
user.tournaments.push(t);
// Save to db down here....
数据库已正确更新