InsertMany Mon goose Ошибка из-за уникального идентификатора - PullRequest
0 голосов
/ 06 марта 2020

У меня есть следующий сегмент кода

    // Insert Question Archive into the DB (only at first execution needed)
      await QuestionArchive.insertMany(questionData.questionPool);
      // Get 20 random questions out of the existing Question Archive Collection and assign Room Number
      let selectedQuestions = await QuestionArchive.aggregate( [ { $sample: { size: 20 } } ]);
      selectedQuestions.forEach(question => {
        // At this point i should assure that selectedQuestions have NO _id so this gets newly generated
        question.room = req.body.room.title;
      });
      // Insert the random questions into the Question Collection
      Question.insertMany(selectedQuestions).then(inserted => {
        res.status(201).json({
          message: 'New Room created!',
          result: newRoom
        });
      }).catch(error => {
        console.error('Post CreateRoom - Question insertion error: ' + error);

На самом деле при первом запуске программы массив вопросов (QuestionPool) загружается в мою коллекцию QuestionArchive. Из архива вопросов я беру 20 случайных вопросов и сохраняю их отдельно в коллекцию вопросов! Теперь сначала попробуйте, все работает просто отлично! Как только я запускаю этот код во второй раз, я получаю ОШИБКУ, потому что некоторые из 20 вставленных случайных Вопросов уже находятся в Сборнике Вопросов с первого запуска. Что мне действительно нужно сделать, так это всегда назначать другой «_id» при вставке вопроса из QuestionArchive ==> Вопрос! Поэтому не нужно идентифицировать ДВОЙНЫЕ наборы данных! Как это может быть сделано?

Любая помощь очень важна!

...