簡體   English   中英

使用react和Express.js獲取API響應不會通過console.log顯示任何結果

[英]Fetch API response with react and Express.js won't show any result with console.log

我有一個登錄表單,該表單使用fetch將數據發送到Express.js后端。 在客戶端上,當我想在提取調用完成時顯示其結果時,將不顯示任何內容(並且永遠不會到達數據回調)。 我似乎沒有收到任何錯誤,但我知道數據已成功發送到后端。

這是Express.js服務器代碼:

const express = require('express');

const User = express.Router();

const bcrypt = require('bcrypt');

const user = require('../Models/user');

這是編輯

 function loginRouteHandler(req, res) {
  user.findOne(
    {
      where: {
        userName: req.body.userName,
      },
    },
  )
    .then((data) => {
      if (bcrypt.compareSync(req.body.password, data.password)) {
        req.session.userName = req.body.userName;
        req.session.password = req.body.password;
        console.log(req.session);
        res.status(200).send('Success!');
      } else {
        res.status(400).send('some text');
      }
    });
}

    User.route('/').get(getRouteHandler);

    User.route('/register').post(postRouteHandler);

    User.route('/login').post(loginRouteHandler);

    module.exports = User;

這是fetch調用:

fetch('http://localhost:4000/login',{
  method: 'POST',
  headers: {
    'Accept': 'application/json,text/plain, */*',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    userName: this.state.userName,
    password: this.state.password,

  }),

}).then((response)=>{
if(response.ok){
  console.log(response)
}
else {
  console.log("a problem")
}
}).then((data)=>{
console.log(data)
});

從response.ok中刪除ok

刪除.then((data)=> {console.log(data)});

並檢查控制台日志。

}).then((response)=>{
if(response){
  console.log(response)
}
else {
  console.log("a problem")
}
}).then((data)=>{
console.log(data)
});

在您的loginRouteHandler ,如果bcrypt比較成功,則響應中將不返回任何內容。 因此,在if語句的第一分支中,放入res.send('Success!')或類似內容。

這是一個例子:

function loginRouteHandler(req, res) {
  user.findOne(
    {
      where: {
        userName: req.body.userName,
      },
    },
  )
    .then((data) => {
      if (bcrypt.compareSync(req.body.password, data.password)) {
        req.session.userName = req.body.userName;
        req.session.password = req.body.password;
        console.log(req.session);
        res.status(200).send('Success!');
      } else {
        res.status(400).send('some text');
      }
    });
}

更新:您也沒有通過.text().json()獲得獲取響應的輸出。 您必須將fetch調用更新為以下內容:

fetch(/* stuff */).then((response)=>{
if(response.ok){
  console.log(response)
}
else {
  console.log("a problem")
}
return response.text()
}).then((data)=>{
console.log(data)
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM