Loop over Array внутри Loop - PullRequest
       6

Loop over Array внутри Loop

0 голосов
/ 08 сентября 2018

на основе этого вложенных документов Mongoose / DocumentsArrays id я пытаюсь реализовать условие в цикле внутри цикла. В конце новый «tosave» объект комментариев должен содержать _id из BlogPost, основанный на «где a_id = b_id».

Я использую ноды, экспрессы и мангусты. У меня есть многострочная форма с несколькими блог-постами, а блог-пост может иметь несколько комментариев.

На бэкэнде у меня есть 2 массива -> BlogPosts и комментарии вроде этого:

BlogPosts: [{ a_id: '1', name: 'name1' },
            { a_id: '2', name: 'name2' },
            { a_id: '3', name: 'name3' }], 


Comments: [{ b_id: '1', name: 'comment for BlogPost name1' },
           { b_id: '1', name: 'other comment for BlogPost name1' },
           { b_id: '3', name: 'comment for BlogPost name3' }],

Мне нужен _id из блогового документа внутри каждого комментария, чтобы ссылаться между комментариями и постами блога.

Я зацикливаюсь на BlogPosts так:

var new_post_to_save = [];

    for(var i=0; i<req.body.blogposts.length;i++) {

       var newpost = new BlogPost();

       console.log('blogpost nr : ' + [i] + ' has new _id: ' + newpost._id );

       newpost.name = req.body.blogposts[i].name,
       newpost.a_id = req.body.blogposts[i].a_id

       new_post_to_save.push(newpost);

     },

Это работает нормально. Я получил новый массив "new_post_to_save", который я могу легко сохранить. Теперь я пытаюсь выполнить цикл внутри BlogPosts, чтобы дать каждому комментарию поле _id из вновь созданного объекта "newpost".

Что я пытаюсь - но это не удалось .. Он соответствует всем Комментариям ко всем BlogPosts.

var new_post_to_save = [];
var new_comment_to_save = [];

     for(var i=0; i<req.body.blogposts.length;i++) {

       var newpost = new BlogPost();

       console.log('blogpost nr : ' + [i] + ' has new _id: ' + newpost._id );

       newpost.name = req.body.blogposts[i].name,
       newpost.a_id = req.body.blogposts[i].a_id

       // here a loop to create x Comments with the _id from newpost and 
       // the condition: IF a_id = b_id 
       // then create new Comment and get die _id from his Blogpost

       for(var f=0; f<req.body.comments.length;f++) {

         if (newpost.a_id = req.body.comments[f].b_id) 
         console.log(' Yea ! Comment ' + [f] + ' matches Blogpost Nr. ' + [i]);

          var newcomment = new CommentModel();

          newcomment.id_newpost = newpost._id,
          newcomment.name = req.body.comments[f].name,
          newcomment.b_id = req.body.comments[f].b_id,       
        };  // end if
     };   // end for


    new_comment_to_save.push(newcomment);
    new_post_to_save.push(newpost);

      },    // end for

Это мой первый вопрос здесь.

Есть идеи? Большое спасибо

1 Ответ

0 голосов
/ 08 сентября 2018

Я не знаком с Mongoose, просто смотрю на ваш код, кажется, у вас есть небольшая ошибка в коде: position of: new_comment_to_save.push (newcomment); это должно быть в if, потому что только когда они совпадают, вы хотите, чтобы они были добавлены ..

var new_post_to_save = [];
var new_comment_to_save = [];
 for(var i=0; i<req.body.blogposts.length;i++) {

   var newpost = new BlogPost();

   console.log('blogpost nr : ' + [i] + ' has new _id: ' + newpost._id );

   newpost.name = req.body.blogposts[i].name,
   newpost.a_id = req.body.blogposts[i].a_id

   // here a loop to create x Comments with the _id from newpost and 
   // the condition: IF a_id = b_id 
   // then create new Comment and get die _id from his Blogpost

   for(var f=0; f<req.body.comments.length;f++) {

     if (newpost.a_id = req.body.comments[f].b_id) 
     console.log(' Yea ! Comment ' + [f] + ' matches Blogpost Nr. ' + [i]);

      var newcomment = new CommentModel();

      newcomment.id_newpost = newpost._id,
      newcomment.name = req.body.comments[f].name,
      newcomment.b_id = req.body.comments[f].b_id,
      new_comment_to_save.push(newcomment);       
    };  // end if
 };   // end for



new_post_to_save.push(newpost);

  },    // end for
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...