Я пытаюсь отобразить данные в реальном времени из Mongodb (Mongoose) с помощью socket.io, но это дает мне ошибку «Превышен максимальный размер стека вызовов»
Я знаю, что отправляемый объект MongoDB большой. Но я действительно не знаю, как я могу разделить его, чтобы отображать только значения.
io.on('connection', (socket) => {
console.info("Someone connected.");
var List1Objects1 = Post.find().limit(1).sort({_id:-1});
socket.emit('temp', {temp: List1Objects1 })
});





Во-первых, Post.find — это асинхронная функция. Вам придется использовать его с обещанием, таким как API или обратный вызов:
Post.find().then(results => {
socket.emit('temp', {temp: results});
}).catch(err => console.info(err));
И не отправляйте всю модель мангуста через сокет:
Post.find().then(results => {
socket.emit('temp', {temp: results.toJSON()});
// or
socket.emit('temp', {temp: results.toObject()});
}).catch(err => console.info(err));
Также есть опция lean, которую вы можете передать при запросе, которая преобразует объект в простой объект, и запрос выполняется намного быстрее:
Post.find().lean().then(results => {
socket.emit('temp', {temp: results});
}).catch(err => console.info(err));
Как насчет этого? UnhandledPromiseRejectionWarning: TypeError: results.toJSON не является функцией