나는 방법을 찾기 위해 노력하고 확인하는 경우에 학생이 체결 과정/s 를 사용하여 몽구스.
나는 이러한 스키마:
코스키:
const mongoose = require("mongoose");
const User = require("../models/User");
const CourseSchema = new mongoose.Schema(
{
courseName: { type: String, required: true, unique: true },
teacher: {
teacherName: { type: String },
teacherID: {
type: mongoose.Schema.Types.ObjectId,
ref: "User",
},
},
students: [
{
studentName: { type: String },
studentID: {
type: mongoose.Schema.Types.ObjectId,
ref: "User",
},
},
],
},
{ collection: "courses" },
{ timestamps: true }
);
module.exports = mongoose.model("Course", CourseSchema);
여기에 나는 절약의 모든 학생들은 서명은 물론 내부 학생들 의 배열 개체입니다.
학생 스키마:
const mongoose = require("mongoose");
const UserSchema = new mongoose.Schema(
{
username: { type: String, required: true, unique: true },
email: { type: String, required: true, unique: true },
password: { type: String, required: true },
userType: {
type: String,
enum: ["student", "teacher"],
default: "student",
},
isOnline: { type: Boolean, default: false },
},
{ collection: "users" },
{ timestamps: true }
);
module.exports = mongoose.model("User", UserSchema);
지금 내가 만들려고 노력하는 쿼리의 목록을 반환 강좌는 학생결했습니다.
예를 들어:
가 있는 경우 3 과목=[학,영국,프로그래밍] 와 학생 id=1 자 서명(에서 학생들을 배열)에 대한 수학과 영어,다음를 통해 전달할 수 있습니다.수학과 영어 코스를 제공합니다.
이 성공없이(받고 null,하지만 사용자가에서 학생들을 배열의 객체):
router.post("/:id", async (req, res) => {
try {
// get user
var user = await User.findOne({
username: req.body.username,
email: req.body.email,
password: req.body.password,
});
// search user courses by user id.
const coursesList = await Course.find({
students: {
$in: [{ studentID: user._id, studentName: user.username }],
},
});
res.status(200).json(coursesList);
} catch (err) {
res.status(500).json(err.message);
}
});