В вашем коде docs.each
, который будет повторяться по всем doc
, полученным из запроса find()
(который является массивом), и внутри этого блока each
вы отправляете ответ, то есть res.end(JSON.stringify(response));
, который выполняется сразу для первой записи, и, следовательно, вы получаете один объект в качестве ответа вместо массива.
Чтобы вернуть массив, вам нужно поместить res.end(JSON.stringify(response));
вне цикла each()
с функцией toArray
. Вы даже можете удалить цикл each()
, если это не требуется. Итак, ваш код будет выглядеть примерно так:
exports.getAllMinisters = (req, res, next)=>{
db.collection('users').find({}).toArray(function (err, docs) {
if (err) {return next(err);}
docs.each(function (err, doc) {
if (doc) {
//code for single doc
console.log(doc);
}
});
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify(docs));
});
};