Node.js API响应正文为空

时间:2017-11-13 04:55:32

标签: javascript node.js

我正在使用快速api端点进行用户注册。服务器端的一切工作正常,但是当我在客户端打印api响应时,我没有看到我在响应中传递的正文。

这是我的api代码:

app.post('/register', function(req, res) {
    async function f1() {
      console.log(req.body);
      var newUser = [req.body.name, req.body.password];
      var sql = "INSERT INTO users (name, password) VALUES (?, ?)";
      await MySQLConnection.query(sql, newUser, function(err, result){
          console.log("starting first query");
          if (err) throw err;
          console.log("User Added");
      });

      var sql = "SELECT * from users where password=?";
      await MySQLConnection.query(sql, req.body.password, function(err, user){
        console.log("Starting second query");
        if (err) throw err;
        const payload = {
          "id": user[0].ID,
          "name": user[0].name,
          "admin": user[0].admin
        }
        var token = jwt.sign(payload, app.get('superSecret'), {
          expiresIn: 60*60*2
        });
        console.log(token);
        var response = ({
          success: true,
          message: 'Successfully registered',
          token: token
        });
        console.log(response);
        return response;
      });
      return req.body.name;
    }
    f1();
    return res.status(200).send({"message": 'testing response'});
 });

然后这是我的客户端代码发出请求:

fetch('http://localhost:8000/register',
  {
    method: 'POST',
    headers: {'Accept': 'application/json', 'Content-Type': 'application/json'},
    body: JSON.stringify({name: this.state.name, password: passwordHash.generate(this.state.password)})
  }).then((response, err) => {
    if (err) console.log(err);
    console.log(response);
  });

然后这就是我在客户端控制台中看到的内容:

Response { type: "cors", url: "http://localhost:8000/register", redirected: false, status: 200, ok: true, statusText: "OK", headers: Headers, bodyUsed: false }

所以我希望在回复的某个地方看到这条消息,但我无法弄清楚为什么它没有出现在任何地方。有趣的是,在服务器代码中,我可以设置res.status(500),客户端将确认它收到了500响应。

任何帮助或指示都将不胜感激。

0 个答案:

没有答案