参照されたデータを別のオブジェクト内からログに記録するのに問題があります。参照されたオブジェクト属性をconsole.log()に取得する
私は現在、2つのモデルを持っている...
するvarマングース=は、( "マングース")を必要とします。
STUDENT:
var gameSchema = new mongoose.Schema(
{
name: String,
courses: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "Course"
}
]
});
module.exports = mongoose.model("Student", gameSchema);
コース:私はCONSOLE.LOG
var mongoose = require("mongoose");
var courseSchema = new mongoose.Schema (
{
name: String,
student: [
{
id:
{
type: mongoose.Schema.Types.ObjectId,
ref: "Student"
},
name: String
}
]
}
);
module.exports = mongoose.model("Course", courseSchema);
は(foundStudent.courses [0] .nameの)私は未定義取得し、私はその理由を把握することはできません。..ここで
app.post("/students/:id", function(req, res){
Student.findById(req.params.id, function(err, foundStudent){
if(err){
console.log(err);
} else {
Course.create(req.body.class, function(err, createdCourse){
if(err){
console.log(err);
} else {
createdCourse.student.push(foundStudent);
createdCourse.save();
foundStudent.courses.push(createdCourse);
foundStudent.save();
res.redirect("/students/" + req.params.id);
}
});
}
});
});
は...ショーのページです
<div>
<h1>Student Profile</h1>
<h2>Name: <%=student.name%></h2>
<div>
<h3>Classes:
<form action="/students/<%= student._id %>" method="POST">
<% student.courses.forEach(function(course){ %>
<li><p><%= course.name %></p></li>
<% }); %>
<a href="/students/<%=student._id%>/courses/new">Add Course</a>
</form>
</h3>
</div>
</div>
参照オブジェクトを自動的に取得するには、[populate](http://mongoosejs.com/docs/populate.html)を使用する必要があります。 –
これはルートを取得する必要がありますはい? –
はい、 'DocumentQuery'オブジェクトを返すfindメソッドの後です。これは、コールバックがDocumentQueryオブジェクトの 'exec'メソッドに移動されなければならないことを意味します。例えば' Student.findById(id).populate( 'courses')。exec((err、res)=> ...) '。 –