我有一个函数可以在必要时返回承诺拒绝并带有新错误。我写了一条消息,但这条消息无法通过承诺的.tt来处理。它设置为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回复中。 当它成功时,我的数据发送没有问题。为什么返回Promise.reject确实有效但错误中没有消息?
感谢阅读
答案 0 :(得分:0)
您希望使用err.message
,如下所示:{success: false, message: err.message}
。所有Error
个对象都有一个message
属性,而且是您正在寻找的字符串。
更长的答案(你可以在其他地方查找)是Error
对象没有"字符串化"一切都很好。对于标准JSON.stringify()
,您需要这样的内容:JSON.stringify(err, Object.getOwnPropertyNames(err)
我不会建议您,因为您不希望在面向客户端的错误响应中公开堆栈跟踪!