【问题标题】:TypeError: Converting circular structure to JSON when changed to NodeJS Async AwaitTypeError:更改为NodeJS Async Await时将循环结构转换为JSON
【发布时间】:2018-01-05 14:36:15
【问题描述】:

我最近了解了 NodeJS Async/Await。更改了我的代码,使其更清晰、更易于阅读。

  • 升级到 NodeJS 8.2.1。
  • MongoDB 2.2.30
  • Express 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)

注意:如果更改没有问题: 让文档 = 等待 col.find();到 让文档 = 等待 col.findOne();

希望有人可以帮助我。

【问题讨论】:

    标签: node.js mongodb async-await


    【解决方案1】:

    试试 let documents = await col.find().toArray()

    col.find() 返回一个游标,而someCursor.toArray() 返回一个承诺。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-21
      • 1970-01-01
      • 2018-10-05
      • 2016-01-22
      • 2017-06-29
      • 2019-01-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多