簡體   English   中英

將循環結構轉換為 JSON?

[英]Converting circular structure to 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"),

    }]

我的代碼:下面是我區分 header 和值和格式值的代碼。 格式值表示 mongodb id,date

預期 output:

標頭:_id、INumber、IID、DateReceived

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

當我自動傳遞任何數據時,它應該顯示在 table(ng-table(angularjs)) 中,這意味着不需要硬編碼標題我們傳遞的任何內容都應該顯示。

請幫我解決一下這個。

在調用 formatOutput 之前,將從 mongo 檢索到的文檔轉換為普通的 javascript object 或在查詢中使用lean()。

假設 routput 來自 mongoose 查詢,如果在將查詢傳遞給 function 之前,在查詢上調用 .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);

應該足夠了。

參考:

也許您沒有將await與 mongoose 方法一起使用。 我忘了添加等待,然后發生錯誤:

 const indexUsers = async (req, res, next) => {
        try {
            const users = await db.User.find();
            return res.status(200).json(users);
        } catch (err) {
            next(err);
        }
    };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM