在 Mongoose 中保存嵌套模式
Saving Nested Schemas in Mongoose
我正在尝试使用 Mongoose JS 为我的数据库设计一个具有以下结构的数据库。每个用户都将拥有一系列锦标赛。我的问题是数据库将在保存时存储除 TournamentSchemas 数组之外的所有内容。它只是一个空数组。我不确定我在这里做错了什么,我在这个网站的其他地方看过。
这是我试图让我的数据库看起来像的东西:
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;
下面是我在控制器中实例化新用户的方式 class:
var user = new User({
name : name,
email : email,
password : password,
tournaments : [
{
name : "Trial by Combat",
location : "King's Landing"
}
]
});
我不完全确定 "tournaments : [TournamentScheme]" 行的方式是否是表示该变量将是 TournamentSchemes 数组的正确方式。如果有人有解决方案,如果您也可以引导我完成我做错的事情,我将不胜感激。
我找到问题了!对于可能遇到相同问题的任何人:
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;
为了测试它,我在控制器 class 中实例化了一个新的锦标赛,然后将其推送到锦标赛数组:
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....
数据库更新正确!
我正在尝试使用 Mongoose JS 为我的数据库设计一个具有以下结构的数据库。每个用户都将拥有一系列锦标赛。我的问题是数据库将在保存时存储除 TournamentSchemas 数组之外的所有内容。它只是一个空数组。我不确定我在这里做错了什么,我在这个网站的其他地方看过。
这是我试图让我的数据库看起来像的东西:
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;
下面是我在控制器中实例化新用户的方式 class:
var user = new User({
name : name,
email : email,
password : password,
tournaments : [
{
name : "Trial by Combat",
location : "King's Landing"
}
]
});
我不完全确定 "tournaments : [TournamentScheme]" 行的方式是否是表示该变量将是 TournamentSchemes 数组的正确方式。如果有人有解决方案,如果您也可以引导我完成我做错的事情,我将不胜感激。
我找到问题了!对于可能遇到相同问题的任何人:
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;
为了测试它,我在控制器 class 中实例化了一个新的锦标赛,然后将其推送到锦标赛数组:
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....
数据库更新正确!