Как создать функцию, которая будет добавлять значение в массив в объекте - PullRequest
0 голосов
/ 24 января 2019

Я хочу создать функцию, которая добавит оценку конкретному учащемуся и предмету

Так выглядит мой документ

    "_id" : ObjectId("5b454b545b4545b"),
    "name" : "Bob",
    "last_name" : "Bob",
    "nr_album" : "222",
    "grades" ; {
         "IT" : [
               3,
               3,
               5,
               4
              ]
}

Это то, что я придумал

function addGrade(
nr_album,grades,value
) {
db.studenci.update (
{nr_album: nr_album},
{ $push: { [grades]: value}});
}

addGrade("222","grades.IT",100)

Он работает правильно, но я хочу добиться, чтобы только параметры "grades.IT" передавали только "IT" в параметрах.

1 Ответ

0 голосов
/ 25 января 2019

Вы можете использовать шаблонные строки в ES2015.

Передать подобные аргументы

addGrade("222","IT",100)

Получить параметры "IT" и сделать егодинамически требуемая строка

function addGrade(nr_album, grades, value) {
  const string = `grades.{$grades}`
  db.studenci.update({
    nr_album: nr_album
  }, {
    $push: { [string]: value }
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...