как найти запрос из двух коллекций - PullRequest
0 голосов
/ 17 апреля 2019

Я получаю студент от параметров и ищу модель регистрации для регистрации после получения регистрационной информации, в которой указаны studentID и courseID. Я хочу найти By courseID в модели курса, чтобы найти подробную информацию о курсе и отправить обратно статус. продолжаю получать ошибку, когда я пытался сделать это таким образом. Пожалуйста, помогите

Схема курса

    const mongoose = require("mongoose");
//Course Schema
//Faculty can add courses to the DB
const courseSchema = mongoose.Schema({
  _id: mongoose.Schema.Types.ObjectId,
  courseID: { type: String, required: true },
  courseName: { type: String, required: true },
  courseDept: { type: String, required: true },
  courseDescription: { type: String, required: true },
  courseRoom: { type: String, required: true },
  waitListCap: { type: Number, required: true },
  courseTeam: { type: String },
  taughtBy:{ type: String }
});
module.exports = mongoose.model("Course", courseSchema);

Схема регистрации

    const mongoose = require("mongoose");
//Course Schema
//Faculty can add courses to the DB
const registrationSchema = mongoose.Schema({
  _id: mongoose.Schema.Types.ObjectId,
  courseID: { type: mongoose.Schema.Types.ObjectId, ref: "Course" },
  studentID:{ type: mongoose.Schema.Types.ObjectId, ref: "User" }

});

module.exports = mongoose.model("Registration", registrationSchema);

 router.get("/classregistration/:id", (req, res, next) => {
  Registration.find({
      studentID: req.params.id
    })
    .exec()
    .then(data => {
      data.map(single => {
        Course.find({
          courseID: single.courseID
        }).exec().then(course => {
          console.log('from course', course)
          const response = {
            course: course.map(singleData => {
              return {
                id: singleData._id,
                courseID: singleData.courseID,
                courseDept: singleData.courseDept,

              };
            })
          };

        })
        res.status(200).json(response);
      })


    })
    .catch(err => {
      console.log(err);
      res.status(500).json({
        error: err
      });
    });

})

1 Ответ

1 голос
/ 17 апреля 2019

Вы можете использовать агрегат, и вы получите результат, пожалуйста, проверьте его и дайте мне знать

Registration.aggregate([
  {
    $match : { studentID :req.params.id}
  },{
    $lookup:
    {
      from: "Course",
      localField: "courseID",
      foreignField: "courseID",
      as: "courses"
    }
  }
]).exec(function (err, res) {
  if (err) {
    response.json({
      error: true,
      message: err.message
    });
  }
  else if (res) {
    console.log(res)
    response.json({
      error: false,
      result: res,
      message: "Get courses  succesfully"
    });
   }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...