我有一个函数,在必要时返回一个承诺拒绝与新错误 . 我写了一条消息,但这条消息无法通过承诺的.then来处理 . 它设置为undefined . 这里的功能:
exports.addBrand = function (user, data) {
/** Mandatory data **/
let name = "'" + data.brand.name + "'"
let idAdvertiser = data.brand.idAdvertiser
/** Optional data **/
let isDefaultBillingEntity = data.brand.isDefaultBillingEntity === undefined ? null : data.brand.isDefaultBillingEntity
if (name === undefined || idAdvertiser === undefined) return Promise.reject(new Error('A Brand name and an advertiser id should be provide'))
return tools.execSQLQuery(query)
.then(result => result[0])
.catch(err => console.log(err))
我通过这种方式在另一个文件中调用此函数:
var addBrand = (req, res) => {
Brand.addBrand(req.user, req.body)
.then(result => res.status(201).json({success: true, ui_info: 'Brand created.', ui_type: 'good', data: {brand: result}}))
.catch(err => res.status(403).json({success: false, message: err}))
}
问题是消息:错误在我的json响应中显示“message:{}” . 当它成功时,我的数据发送没有问题 . 为什么返回Promise.reject确实有效但错误中没有消息?
感谢阅读
1 回答
你想使用
err.message
,像这样:{success: false, message: err.message}
. 所有Error
对象都有一个message
属性,而's the string you'正在寻找 .更长的答案(你可以在其他地方查找)是
Error
对象并没有那么好 . 对于标准的JSON.stringify()
,你需要这样的东西:JSON.stringify(err, Object.getOwnPropertyNames(err)
我不建议在你的情况下,因为你不想在面向客户端的错误响应中暴露你的堆栈跟踪!