創造所以有一種嵌套結構與我的DB這裏是我的三個模式: 用戶模式:貓鼬與推動多參
var UserSchema = new mongoose.Schema({
email: {
type: String,
lowercase: true,
unique: true,
required: true
},
password: {
type: String,
required: true
},
role: {
type: String,
enum: ['trainer', 'client', 'admin'],
default: 'client'
},
trainer: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
},
programs: [
{
type: mongoose.Schema.Types.ObjectId,
ref: 'Program'
}
],
diet: [
{
calories: {
type: Number
},
protein: {
type: Number
},
fats: {
type: Number
},
carbs: {
type: Number
},
fiber: {
type: Number
}
}],
stats:
{
bodyweight:
[ {
_id: false,
measurement:{ type: Number},
time : { type : Date, default: Date.now }
}
]
},
name: {
type: String,
required: true
},
}, {
timestamps: true
});
程序模式:
var ProgramSchema = new mongoose.Schema({
title: {type: String, required: true},
description: {type: String, required: true},
createdby: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
},
exercises: [
{
exercise:{
type: mongoose.Schema.Types.ObjectId,
ref: 'Exercise'
},
sets:{
type: Number
}
}
]
}, {
timestamps: true
});
和鍛鍊模式:
var ExerciseSchema = new mongoose.Schema({
name: {
type: String,
lowercase: true,
unique: true,
required: true
},
description: {
type: String,
required: true
},
video: {
type: String
},
image: {
type: String
}
}, {
timestamps: true
});
正如你所看到的,一個用戶可以有許多程序和一個程序可以有很多練習。但是,當我返回一個用戶對象時,即使使用填充函數,用戶程序中的練習也不會填充。我相信這是我如何創建一個程序,從我的理解,我必須將鍛鍊對象推入程序,但我不知道我將如何創建一個程序,並在同一時間推入練習。這是我目前的創建程序功能:
exports.createProgram = function(req, res, next){
Program.create({
title : req.body.title,
description: req.body.description,
exercises: req.body.exercises,
createdby: req.body.createdby
}, function(err, program) {
if (err){
res.send(err);
}
Program.find(function(err, programs) {
if (err){
res.send(err);
}
res.json(programs);
});
});
}
有沒有一種方法,我可以做一些forEach req.body.exercises也許? 在此先感謝 另外這裏是我如何回報用戶:
exports.getClients = function(req, res, next){
var trainerid = req.params.trainerid;
User.find({trainer: trainerid})
.populate({
path: 'programs',
populate: { path: 'exercises' }
})
.exec(function (err, clients) {
if (err) return handleError(err);
console.log(clients);
res.json(clients);
});
}
你能證明你的'req.body.exercises'? –