这是我用于处理注册的代码
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()中处理该错误,而是将其保留在中。然后()
正如我们在图像中看到的那样,状态代码是403,这是错误的,.catch()
的console.log(“ in error”)没有得到打印。
答案 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