Переменные внутри $ push не работают в Mongoose

#javascript #node.js #mongoose #mongoose-schema

#javascript #node.js #mongoose #mongoose-схема

Вопрос:

У меня есть такая схема

 courses: [],
workshops: [],
events: [],
semesters: {
  sem1: { cie1: [], cie2: [], cie3: [], final: [] },
  sem2: { cie1: [], cie2: [], cie3: [], final: [] },
  sem3: { cie1: [], cie2: [], cie3: [], final: [] },
  sem4: { cie1: [], cie2: [], cie3: [], final: [] },
  sem5: { cie1: [], cie2: [], cie3: [], final: [] },
  sem6: { cie1: [], cie2: [], cie3: [], final: [] },
  sem7: { cie1: [], cie2: [], cie3: [], final: [] },
  sem8: { cie1: [], cie2: [], cie3: [], final: [] },
},
  

Я хочу, чтобы данные push были в CIE и в конечном массиве каждого sem
Я использую это для

   if(type==="cie"){
    const path = "semesters.sem" semester ".cie" num;
    // const path = "semesters.sem1.final.";
    Student.update({reg_no: req.body.regno},{$push:{path:req.body.submarks}},function(err,result){
        res.send(err);
    });
  }
  if(type === "final"){
    // const path = "semesters.sem" semester ".final";
    const path = "semesters.sem1.final.";
    Student.update({reg_no: req.body.regno},{$push:{path:req.body.submarks}},function(err,result){
      res.send(result);
  });
  }
  

Я использую переменную path для определения пути, но она не работает, когда я указываю путь в виде строки в push, она работает, но это не работает, когда я указываю в виде строковой переменной.
Помогите мне решить эту проблему.

Ответ №1:

Чтобы использовать varibale в качестве ключа объекта, вам нужно сделать что-то вроде:

 { $push: { [path]: req.body.submarks } }