TypeError: преобразование круговой структуры в JSON при изменении на NodeJS Async Await

Недавно я узнал о NodeJS Async/Await. Изменены мои коды, чтобы сделать его чище и легче для чтения.

  • Обновлен до NodeJS 8.2.1.
  • MongoDB 2.2.30
  • Экспресс 4.1.4

Код выглядит ниже:

    var express = require('express');
    var router = express.Router();
    var MongoClient = require('mongodb').MongoClient;
    var assert = require('assert');
    var url = process.env.mongo;


    /* GET home page. */
    router.get('/', async function(req, res, next) {
      try{
        let db = await MongoClient.connect(url);
        let col = await db.collection('product');
        let documents = await col.find();
        return res.send(documents)
      }catch(err){
        console.log(err)
      }

    });


module.exports = router;

Возникли проблемы с этой ошибкой,

TypeError: Converting circular structure to JSON
at JSON.stringify (<anonymous>)
at stringify (/home/edmondtm/test-async/node_modules/express/lib/response.js:1064:12)
at ServerResponse.json (/home/edmondtm/test-async/node_modules/express/lib/response.js:243:14)
at ServerResponse.send (/home/edmondtm/test-async/node_modules/express/lib/response.js:152:21)
at /home/edmondtm/test-async/routes/index.js:15:16
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)

Примечание: нет проблем при изменении: let documents = await col.find(); разрешить документы = await col.findOne();

Надеюсь, кто-нибудь может мне помочь.

1 ответ

Пытатьсяlet documents = await col.find().toArray()

col.find() возвращает курсор, пока someCursor.toArray() возвращает обещание

Другие вопросы по тегам