Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从API节点JS获取不正确的数据_Javascript_Node.js_Reactjs_Api_Mongoose - Fatal编程技术网

Javascript 从API节点JS获取不正确的数据

Javascript 从API节点JS获取不正确的数据,javascript,node.js,reactjs,api,mongoose,Javascript,Node.js,Reactjs,Api,Mongoose,我希望我没有重复这个问题,但我没有在stackoverflow上找到任何问题 这是一种登录方法,当有人正确登录时,我会发送一个200状态码和用户对象作为响应, 但是在客户端,我只得到默认响应200,当我用错误的密码登录时,我得到500个默认响应,没有任何我发送的数据!正确登录时没有错误消息和对象 这是中间件 我用 app.use(express.json()); app.use(bodyParser.json()); 登录方法 exports.logIn =async (req,res)=&g

我希望我没有重复这个问题,但我没有在stackoverflow上找到任何问题

这是一种登录方法,当有人正确登录时,我会发送一个200状态码和用户对象作为响应, 但是在客户端,我只得到默认响应200,当我用错误的密码登录时,我得到500个默认响应,没有任何我发送的数据!正确登录时没有错误消息和对象

这是中间件

我用

app.use(express.json());
app.use(bodyParser.json());
登录方法

exports.logIn =async (req,res)=>{

 let {email,password} = req.body;
 let user;
 let passwordCorrect;
 try{
   user = await UserModel.findOne({email:email});

   if(user){
       console.log("user found")
     passwordCorrect= await bcryptjs.compare(password,user.password);

     if(passwordCorrect){
       console.log("password correct")

       res.json({user:user})
     }else{
       console.log("password not")

       throw new Error("password is wrong");

     }

   }else{
     console.log("user not found ")

     throw new Error("This user is not in our system");
   }

 }catch(err){
   console.log("catched error  ")
   console.log(err)

   res.status(500).json({
     status:'fail',
     message:err.message
   })

 }

}


这是我正确登录时得到的响应, 响应缺少从服务器发送的数据, 如果密码错误,我收到的500封邮件中没有我从服务器发送的错误消息

Response {type: "cors", url: "http://localhost:8080/api/user/login", redirected: false, status: 200, ok: true, …}
type: "cors"
url: "http://localhost:8080/api/user/login"
redirected: false
status: 200
ok: true
statusText: "OK"
headers: Headers {}
body: (...)
bodyUsed: false
__proto__: Response
从我使用react的客户端

  try{

            const user  = await fetch("http://localhost:8080/api/user/login",{
                headers:{
                    "Content-Type":"application/json"
                },
                method:"POST",
                body:JSON.stringify(data)
            });

              if(user.ok){
               // auth.login();
               console.log('ok')
               console.log(user)
            }else{
                console.log('not ok')

                console.log(user)

                setError(user.message)
            }

         }catch(err){

            console.log("error ")
            console.log(err);
            setError(err)

 }
这是接受来自其他域的请求的中间件

app.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*"); // update to match the domain you will make the request from
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.header("Accses-Control-Allow-Methods","GET,POST,DELETE,PATCH");
console.log(req.body);
    next();
  });
Javascript返回包含响应的承诺。这只是一个HTTP响应,而不是实际的JSON。为了从响应中提取JSON正文内容,我们使用
JSON()
方法

因此,您的代码应该是:

试试看{
const response=等待获取(“http://localhost:8080/api/user/login", {
标题:{
“内容类型”:“应用程序/json”
},
方法:“张贴”,
正文:JSON.stringify(数据)
});
if(response.ok){
控制台日志(“ok”);
让user=wait response.json();
console.log(“用户:”,用户);
}否则{
控制台日志(“不正常”);
控制台日志(响应);
setError(response.message);
}
}捕捉(错误){
控制台日志(“错误”);
控制台日志(err);
设置错误(err);
}

您能举例说明如何发送请求和收到的回复吗?是的,我将编辑我的问题。在两种情况下,请使用return返回您的回复。成功回应2。错误响应你有没有试过“下一步(错误)`在你的接球过程中?