【发布时间】:2020-02-14 23:13:35
【问题描述】:
我有几个不同的文件,其中包含多个相关的功能,我将它们用作各种控制器。其中一个我有一个承诺,并且在尝试解决它时遇到了我的问题。它的完成方式与我最常见的传递单个值不同。我正在尝试使用包含两个键的 JavaScript 对象进行解析,一个具有布尔值,另一个具有值的数组。
我在 catch 块中遇到的实际错误是
TypeError:将循环结构转换为 JSON
这是我试图解决承诺的方法
resolve({success: true, names: body.names});
其中body.names 等于下面的数组
[ [ 'John Smith', 'Jane Doe' ], [ 'John Smith' ] ]
我的目标是让承诺以某种方式解决,我可以传递我的“成功”值来进行一些额外的处理(如果为 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 });
})
});
【问题讨论】:
-
您的问题中显示的代码中的任何内容都不会产生该错误。请提供更多详细信息,尤其是minimal, reproducible example
-
@Phil 什么样的事情会产生错误?我包括了我认为正在制作它的东西。不知道还能发布什么
-
@Phil 添加了所有可能相关的代码
-
看起来你这样做了
policy: res...并且JSON字符串化res会导致该错误...你的意思是policy: response吗?哎呀 - 看到你自己回答了一个简单的错字 -
@Bravo Bingo,那个简单的错字让我头晕了几个晚上,现在想知道我做错了什么。
标签: javascript node.js promise es6-promise