簡體   English   中英

TypeError:通過快遞發送數組時將循環結構轉換為 JSON

[英]TypeError: Converting circular structure to JSON when sending array via express

我有幾個不同的文件,其中包含多個相關的功能,我將它們用作各種控制器。 其中一個我有一個 promise 並且在嘗試解決它時遇到了我的 catch 塊。 它的完成方式與我最常見的傳遞單個值不同。 我正在嘗試使用 JavaScript object 解決,其中包含兩個鍵,一個具有 boolean 的值,另一個具有一個值的數組。

我在 catch 塊中遇到的實際錯誤是

TypeError:將循環結構轉換為 JSON

這是我嘗試解決 promise 的方法

resolve({success: true, names: body.names});

其中body.names等於下面的數組

[ [ 'John Smith', 'Jane Doe' ], [ 'John Smith' ] ]

我的目標是讓 promise 以一種我可以傳遞我的“成功”值來做一些額外處理的方式解析(如果為 false 則不是錯誤,需要作為非錯誤處理)但也希望傳遞數組名稱,以便我可以在我的 API 響應中傳遞它。

編輯**

更多代碼

exports.formatWithNames = function(policy) {
    return new Promise((resolve, reject) => {
        options.json = {policy};
        request.post('/userListByIDs', options, (err, response, body) => {
            if (err) {
                logger.error(`policy: formatWithNames: ${JSON.stringify(err)}`);
                reject({success: false, message: 'Failure'});
            }
            logger.info(`policy: formatWithNames: body: ${JSON.stringify(body)}`);
            resolve({success: true, names: body.names});
        });
    });
}

然后在哪里調用

Policy.find({ companyID: req.body.user.companyID }, (err, policy) => {
        if (err) {
            logger.info(`getAllPolicy: Policy find: Error message: ${err}`);
            return res.status(500).json({ success: false, message: 'Error finding policies.' });
        }

        userController.formatWithNames(policy)
        .then(response => {
            console.log(response)
            return res.status(200).json({ success: true, policy: res });
        })
        .catch(err => {
            logger.error(`getAllPolicy: formatWithNames: Error message: ${err}`);
            return res.json({ success: false, policy: null });
        })


    });

好的解決方案非常簡單,只是我有一個名為miss的變量,現在感覺很低。 我應該使用policy: response而不是policy: res在我 then 的 formatWithNames 塊中返回我的響應時。 所以似乎發生的事情是res被發回,但是因為我將它包含在響應中,它正在創建對自身的循環引用(循環?)

暫無
暫無

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

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