에 대한 푸시로 만들 내 세 개의 스키마입니다 : 사용자 스키마 :몽구스 그래서 여기 내 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
});
, 사용자가 많은 프로그램을 가질 수 있고 프로그램이있을 수 있습니다 많은 연습. 그러나 populate 함수를 사용하는 경우에도 사용자 객체를 반환 할 때 사용자 프로그램 내의 연습은 채워지지 않습니다. 나는 이것이 내가 프로그램을 만드는 방법에 대한 믿음에서 운동 목표를 프로그램 안으로 밀어 넣어야한다는 것을 이해하고 있지만 어떻게 프로그램을 만들고 동시에 연습 문제를 푸는 지 잘 모르겠다.
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);
});
});
}
내가 어쩌면 req.body.exercises에 좀 대해 forEach의 일부를 할 수있는 방법이 있나요 : 이것은 내 현재 생성 프로그램 프로그램 기능입니까? 내가 사용자를 반환하는 방법을 미리 에서 덕분에 또한 여기에 있습니다 :
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'을 보일 수 있는가? –