Невозможно заполнить ссылку на вложенную схему в Mongoose - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть несколько схем, и я пытаюсь запросить данные с помощью заполнения. Я использую mon goose (5.9.7) и express js.

Первая схема - ProfileSchema

const ProfileSchema = new Schema({
  user: {
    type: Schema.Types.ObjectId,
    ref: "User"
  },
  jobs: [
    {
      type: Schema.Types.ObjectId,
      ref: "Job"
    }
  ],
  resumes: [
    {
      type: Schema.Types.ObjectId,
      ref: "Resume"
    }
  ],
  name: {
    type: String,
    required: true
  },

});

module.exports = Profile = mongoose.model("Profile", ProfileSchema);

Вторая схема - Схема возобновления

const ResumeSchema = new Schema({
  user: {
    type: Schema.Types.ObjectId,
    ref: "User"
  },
  fileLink: { type: String, required: true },
  fileName: { type: String, required: true },
  description: { type: String, required: true }
});

module.exports = Resume = mongoose.model("Resume", ResumeSchema);

Маршрут

router.get(
  "/",
  passport.authenticate("jwt", { session: false }),
  async (req, res) => {
    try {
      const profile = await Profile.findOne({
        user: req.user.id
      })
        .populate("resumes")
        .exec();
      res.json(profile);
    } catch (error) {
      return res.status(400).json(error);
    }
  }
);

Возвращает пустой массив для резюме и заданий. Я пробовал разные варианты заселения, но это не работает. Пробовал также заселить. Хотя пользователь пополняется нормально.

РЕДАКТИРОВАТЬ: Добавление маршрута загрузки резюме

Маршрут

router.post(
  "/upload",
  passport.authenticate("jwt", { session: false }),
  upload.single("resume"),
  async (req, res) => {
    try {
    // upload to s3 code here

      if (data) {
        const resumeData = {
          description: req.body.description,
          fileName: params.Key,
          fileLink: data.Location,
          user: req.user.id
        };

        const resume = new Resume(resumeData);
        const fileSavedToSchema = await resume.save();
        return res.json(fileSavedToSchema);
      }
    } catch (error) {
      console.log(error);
    }
  }
);

Я могу просматривать резюме, используя другой маршрут.

...