.catch()在react-native的获取中

时间:2018-09-07 12:14:37

标签: react-native fetch

这是我用于处理注册的代码

handleSignUp(){
    console.log('Clicked')
    fetch('http://laptopIp:9999/signUp',{
        method:'POST',
        headers:{
            Accept:'application/json',
            'Content-Type':'application/json',
        },
            body:JSON.stringify(this.state),
    })
    .then((res)=>{
        console.log("here")
        console.log(res)
        this.setState({error:false})
    }).catch((e)=>{
        console.log(e)
        console.log("in error")             
    })

这是处理requset的快递服务器

router.post('/signUp',function(reqs,resp){


MongoClient.connect(url,{ useNewUrlParser: true },function(err,database){
    if(err){
        console.log(err)
    }else{

        var dataBases = database.db("thaparApp")

        dataBases.collection('userLogin').find({'email':reqs.body.email}).toArray(function(err,result){
            if(err){
                console.log(err)
            }else if(result[0]){
                resp.status(403).send({"error":"email is taken"})
            }else{
                if(validateEmail(reqs.body.email)){
                    dataBases.collection('userLogin').insertOne(reqs.body)
                    resp.send()
                }else{
                    resp.status(403).send({"error":"Email is not correct"})
                }
            }
        })

    }
})

})     }

我在做什么是从react-native发送相同的用户名,而express向我发送错误 403 ,但是 React native无法在.catch()中处理该错误,而是将其保留在中。然后()

enter image description here 正如我们在图像中看到的那样,状态代码是403,这是错误的,.catch()的console.log(“ in error”)没有得到打印。

1 个答案:

答案 0 :(得分:1)

该呼叫从服务器返回,尽管它的状态不是您所期望的,但捕获也不是一个错误。

尝试使用提取的ok检查响应是否有效,例如:

.then(function(response) {
    if (!response.ok) {
        //throw error
    } else {
       //valid response
    }
})

您还可以访问响应的状态,例如:

response.status;

或statusText,例如:

response.statusText;

签出以下内容:

https://developer.mozilla.org/en-US/docs/Web/API/Response/statusText

https://developer.mozilla.org/en-US/docs/Web/API/Response/status

https://www.tjvantoll.com/2015/09/13/fetch-and-errors/