[英]Express middleware "TypeError: Converting circular structure to JSON" when sending a non-circular 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.