首页 文章

node js promise,错误消息不处理

提问于
浏览
0

我有一个函数,在必要时返回一个承诺拒绝与新错误 . 我写了一条消息,但这条消息无法通过承诺的.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 回答

  • 0

    你想使用 err.message ,像这样: {success: false, message: err.message} . 所有 Error 对象都有一个 message 属性,而's the string you'正在寻找 .

    更长的答案(你可以在其他地方查找)是 Error 对象并没有那么好 . 对于标准的 JSON.stringify() ,你需要这样的东西: JSON.stringify(err, Object.getOwnPropertyNames(err) 我不建议在你的情况下,因为你不想在面向客户端的错误响应中暴露你的堆栈跟踪!

相关问题