【问题标题】:not showing the return reject response - nodejs不显示返回拒绝响应 - nodejs
【发布时间】:2018-02-28 02:38:13
【问题描述】:

我对 node js 和 promises 完全陌生。我正在从客户端调用 API 及其主体,如下所示

    return dbNameses.checkNamesAvailable(request.body.data.attributes.Names)
.then((results) => {
  if(results <= 0) {
    return dbNames.saveNewNames(request.body.data.attributes.Names).then((saveresults) =>{
      return response.setStatusCode(200).setPayload({
        message:"Name is saved"
    })
    }).catch()
  }else {
    return response.setStatusCode(500).setPayload({
      message:"Name is already exist"
   })
  }
}).catch(err => {
  return response.setStatusCode(400).setPayload({
     message : err,
     data : err.message
})

和saveNewNames函数如下

    function saveNewNames(
  Names /* :?string | void */ 
)/* :Promise<string> */ {
  const connection = createConnection()
  return new Promise((resolve, reject) => {

    var newNames = [];

    var seperatedNames = Names.split(',')
    if(seperatedNames.length>2){

      var firstNameLine = capitalFirstLetter(seperatedNames[0])
      var secondNameLine = seperatedNames[1].toUpperCase()
      var thirdNameLine = seperatedNames[2].toUpperCase()

      var displayNames = firstNameLine + ',' + secondNameLine + ',' + thirdNameLine

        newNames.push({
        "Names": Names,
        "display": displayNames
      })

       var NamesToDb = JSON.stringify(newNames).replace(/]|[[]/g, ''
     )

     const sql = `
     INSERT INTO Names
     (
       names
     )
     VALUES
     (
       ?
     )`
      const values = NamesToDb
      const query = connection.query(sql, values, (error, results, fields) => {
      connection.end()
      if (error) {
        return reject(error)
      }
        resolve(results)
      })
    }else{
      return reject(new Error('Please add a valid names'))

    }})
    .catch((err) => {
      reject("There was an error adding Names to database", err.message)
      throw err
    })
}

当用户添加了一个不符合格式的无效名称时,它会返回reject(new Error('Please add a valid names')) 部分。并返回 400 错误。但是我在 message : err 或 data : err.message 中没有收到该错误消息,而不是在 data:err.message 中收到“未定义拒绝”

有人可以帮我解决这个问题吗?

【问题讨论】:

  • @Niral Munjariya
  • 您还没有处理 dbNames.saveNewNames catch 块,必须处理它,否则当名称未保存时用户将不会得到响应。
  • @NiralMunjariya - 你能给我指路吗?

标签: javascript node.js


【解决方案1】:

请检查 catch 块:

 return dbNameses.checkNamesAvailable(request.body.data.attributes.Names)
.then((results) => {
  if(results <= 0) {
    return dbNames.saveNewNames(request.body.data.attributes.Names).then((saveresults) =>{
      return response.setStatusCode(200).setPayload({
        message:"Name is saved"
    })
    }).catch(err => {
      return response.setStatusCode(400).setPayload({
        message : err,
        data : err.message
      })
  } else {
    return response.setStatusCode(500).setPayload({
      message:"Name is already exist"
   })
  }
}).catch(err => {
  return response.setStatusCode(400).setPayload({
     message : err,
     data : err.message
})

【讨论】:

    猜你喜欢
    • 2020-04-02
    • 2015-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 2015-11-03
    • 2022-08-03
    相关资源
    最近更新 更多