首页 > 解决方案 > 将循环结构转换为 JSON?

问题描述

我从数据库中获取它我想格式化这个数据,但我得到以下错误

TypeError: Converting circular structure to JSON

    --> starting at object with constructor 'NativeConnection'

    |     property 'base' -> object with constructor 'Mongoose'

    |     property 'connections' -> object with constructor 'Array'

    --- index 0 closes the circle

    at JSON.stringify (<anonymous>)

    at formatReportOutput (E:\Application\routes\data.js:97:50)

以下是我从数据库中获取的数据

var routput = [{

        "_id" : ObjectId("59920689253dfa0544f26b93"),
        "INumber" : "535264",
        "IID" : "25544825",
        "DateReceived" : ISODate("2017-08-14T20:22:33.350Z"),

    }]

我的代码:下面是我区分标头和值以及格式值的代码。格式值表示 mongodb id ,date

预期输出:

标头:_id、INumber、IID、DateReceived

值:59920689253dfa0544f26b93,535264,25544825,2017-08-14

当我自动传递任何数据时,它应该显示在 table(ng-table(angularjs)) 中,这意味着不需要硬编码标题我们传递的任何内容应该显示。

请帮我解决一下这个。

标签: javascriptjquerynode.js

解决方案


在调用 formatOutput 或在查询中使用 lean() 之前,将从 mongo 检索到的文档转换为纯 javascript 对象。

假设 routput 来自 mongoose 查询,如果您在将查询传递给函数之前调用 .lean() 查询或数组实例上的 .toObject() ,则 formatOutput 可能会按预期工作。

所以,像这样:

var routput = await Model.find().lean();
var header ="Yes";
formatOutput(routput, header);

或这个:

var routput = await Model.find();
var header ="Yes";
formatOutput(routput.map(x => x.toObject()), header);

应该足够了。

参考:


推荐阅读