цикл по массиву объектов с использованием node js и mongodb - PullRequest
0 голосов
/ 07 августа 2020

Я новичок в использовании mongodb и node, я пытаюсь l oop через массив объектов из моей базы данных и отображать только объекты с помощью res. json, в моем console.log он отображает весь объект, но в моем почтальоне, использующем res. json, он отображает только один объект, пожалуйста, помогите

МОЙ КОД

const course = res.GetUserDT.coursesHandled;
  for (let index = 0; index < course.length; index++) {
            console.log(course[index]);
        }
const course = res.GetUserDT.coursesHandled;
  for (let index = 0; index < course.length; index++) {
            res.json(course[index]);
        }

мой вывод консоли


{ courseCode: '2103' }
{ courseCode: '2012' }
{ courseCode: '2062' }

мой вывод почтальона


{ courseCode: '2103' }

Ответы [ 3 ]

3 голосов
/ 07 августа 2020

Привет и добро пожаловать в Stackoverflow.

Проблема здесь в том, что res.json() отправляет немедленный ответ запрашивающей стороне - это означает, что ответ отправляется уже в первой итерации вашего for-l oop .

Мне также интересно, зачем вам этот l oop - ведь вы ничего не делаете в нем. Так почему бы вам просто не отправить массив сразу так:

res.json(res.GetUserDT.coursesHandled);
0 голосов
/ 07 августа 2020

Вы можете отправить res.json только один раз.

Чтобы отправить все вместе, вы можете создать массив, pu sh все объекты в массиве и отправить его обратно в качестве ответа.

let arrayToReturn = []
for (let index = 0; index < course.length; index++) {
   arrayToReturn.push(course[index])
}
res.json(arrayToReturn);

Обновление

@ Ответ Дэвида является наиболее точным решением, т.е. просто отправьте массив в качестве ответа напрямую, а не зацикливание

res.json(res.GetUserDT.coursesHandled);
0 голосов
/ 07 августа 2020

Предполагая, что это express, res. json () отправит данные и завершит ответ.

попробуйте что-то вроде:

 const responseArray = [];
 
 for (let index = 0; index < course.length; index++) {
    responseArray.push( course[index] ); 
 }
 res.json(responseArray);
...