node js promise,错误消息不处理

时间:2018-01-23 12:48:20

标签: node.js promise

我有一个函数可以在必要时返回承诺拒绝并带有新错误。我写了一条消息,但这条消息无法通过承诺的.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确实有效但错误中没有消息?

感谢阅读

1 个答案:

答案 0 :(得分:0)

您希望使用err.message,如下所示:{success: false, message: err.message}。所有Error个对象都有一个message属性,而且是您正在寻找的字符串。

更长的答案(你可以在其他地方查找)是Error对象没有"字符串化"一切都很好。对于标准JSON.stringify(),您需要这样的内容:JSON.stringify(err, Object.getOwnPropertyNames(err)我不会建议您,因为您不希望在面向客户端的错误响应中公开堆栈跟踪!