Пожалуйста, помогите мне..
Я пытаюсь получить данные из mongodb с помощью Nodejs. мой код
index.js
var express = require('express');
var app = express();
var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost/studentprogression';
var str = "";
app.route('/results').get(function(req, res)
{
MongoClient.connect(url, function(err, db) {
var cursor = db.collection('results').find();
//noinspection JSDeprecatedSymbols
cursor.each(function(err, item) {
if (item != null) {
str = str + " " + item.marks + "</br>";
}
});
res.send(str);
db.close();
});
});
var server = app.listen(3000, function() {});
моя база данных в mongodb
{ _id: 5c6935d6b215280be42a6005,
srn: '01FM17CCA004',
marks:
[ { sub1: 'E',
sub2: 'D',
sub3: 'A',
sub4: 'D',
sub5: 'S',
taken: 20,
earned: 20,
sgpa: 6.95,
_id: 5c6935d6b215280be42a6006 } ],
__v: 0 }
и вывод должен быть данными, которые находятся внутри массива (sub1,....sgpa), но я получаю как [object Object]
Пожалуйста, помогите мне



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы не должны подключаться к монго в обратных вызовах HTTP-запросов, подключаться к нему один раз и повторно использовать это соединение.
const mongoClient = new MongoClient(url, { useNewUrlParser: true });
mongoClient.connect((err) => {
if (err) throw err;
// Available via req.app.locals.db.
app.locals.db = mongoClient.db('your-database');
app.listen(3000);
});
Вместо того, чтобы зацикливаться на курсоре, вы можете просто вызвать toArray, я рекомендую вам не форматировать ваши данные в строку на сервере, вместо этого передать массив обратно в виде JSON клиенту и позволить клиенту отображать его так, как он хочет:
app.route('/results').get(async (req, res) => {
const { db } = req.app.locals;
const results = await db.collection('results').toArray();
res.status(200).json(results);
});
ваш объект item не является простой строкой. это массив объектов.
Чтобы преобразовать фактический объект в строку, вам придется выполнить итерацию по нему или, как сказал Доминик, использовать метод .toArray(), чтобы упростить задачу. [Object object] появляется, потому что вы сопоставили весь объект со строкой.
Кроме того, как сказал Доминик выше, пожалуйста, не делайте http-соединения в обратных вызовах ваших запросов, подключите его раньше и используйте соединение для ссылки на базу данных.