在React Native iOS中执行put / post / patch请求时出现500错误

时间:2019-12-07 09:51:13

标签: ios node.js react-native express axios

我正在尝试向我的react native(0.60.4)ios项目创建一个放置请求,每次这样做,在发出请求时都会收到500错误。在执行post或patch方法时也遇到了相同的错误。尝试向邮递员发出请求时,我还收到500错误。

我的sql更新工作正常,因为我已经针对数据库运行了脚本并收到了预期的值,这仅仅是更新布尔值。

这是我在redux中的更新方法

export const setChecklistItemToComplete = checklistItemId => {
  var checklistItemInstance = axios({
    method: 'put',
    url: `http://localhost:8080/xxxxxxxx/${checklistItemId}`,
    headers: {
      'Content-Type': 'application/json;charset=UTF-8',
      'Access-Control-Allow-Origin': '*'
    }
  })
  console.log('checklistItemInstance: ', checklistItemInstance)
  return {
    type: MARK_CHECKLIST_ITEM_COMPLETE,
    payload: checklistItemInstance.data
  }
}

这是我的控制人

  try {
    const db = req.app.get('db')
    const { MarkChecklistItemComplete } = db.checklistItem.put
    const { params = {} } = req
    const { checklistItemId } = params

    console.log('checklistItemId: ', checklistItemId) <---GETS TO HERE
    if (joi.string().guid(checklistItemId)) {
      throw new Error('The id is not in the correct format')
    }

    var checklistItemInstance = await MarkChecklistItemComplete({
      checklistItemId
    })

    res.status(200)
    res.json(checklistItemInstance)
  } catch (error) {
    res.status(500)
    res.json(error)
  }
}

我假设这与这里的代码无关,但更多的是应用程序本身的配置。但是发布它不会有任何伤害。如果您还有其他想看到的内容,我会很乐意分享。

2 个答案:

答案 0 :(得分:0)

react-native请求没有任何问题,因为您在try catch代码块内收到错误,因此请求本身很好。如您所说,您通过邮递员会收到相同的错误。

根据我的观察,您使用PUT请求,但是您不使用任何正文。同样,您的代码未到达res.status(200)行,但到达了这一行console.log('checklistItemId: ', checklistItemId)。因此,错误肯定在调用MarkChecklistItemComplete({ checklistItemId })函数中。因此,checklistItemId的值错误/出乎意料,或者函数MarkChecklistItemComplete的内部包含错误。

答案 1 :(得分:0)

这就是当您进行10个小时的编码狂欢时会发生的事情

我的控制器中的if语句正在检查checklistId值,并且如果id的格式正确,则会引发错误。我没有反转支票的价值...

if (joi.string().guid(checklistItemId)) {
      throw new Error('The id is not in the correct format')
    }

转到

   if (!joi.string().guid(checklistItemId)) {
      throw new Error('The id is not in the correct format')
    }