首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >react & node API -获取函数错误

react & node API -获取函数错误
EN

Stack Overflow用户
提问于 2018-08-10 23:47:12
回答 1查看 80关注 0票数 0

我是React和NodeJS express编程的新手,我被一些错误困扰了好几个小时。当我尝试抓取时,有时我得到一个响应(但不是我的响应),有时我得到'failed to fetch‘。

我试图在没有太多理解的情况下理解“cors”的概念,但我提交了app.use(cors()),它允许所有来源。

请注意,我的服务器有时会收到“OPTIONS”请求,有时会收到“POST”请求。

在我的React中,我有这个函数:

代码语言:javascript
运行
复制
fetch('http://localhost:3000/api/login', {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',   
        },
        body: JSON.stringify ({
          user: this.state.username,
          pass: this.state.password,
        })
      }).then(res => {
          console.log(res.msg);
      })
      .catch(function(err) {
        alert(err);
      })
}

在我的NodeJS中,我有这个函数:

代码语言:javascript
运行
复制
router.post('/', (req, res) => {
let user = {
    username: req.body.user,
    password: req.body.pass 
}
UserModel.findOne({'username': user.username, 'password' : user.password}, function(err, user) {
    if (err) {
        res.json({
            ok: false,
            msg: 'login failed, try later'
        });
    } else if (user) {
        let token = jwt.encode(user, secret);
        res.json({
            msg: 'logged in',
            ok: true
        });
    } else {
        res.json({
            ok: false,
            msg: 'invalid input'
        });
    }
});

我很困惑,希望你能帮助我。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-11 00:12:32

您没有正确访问响应的JSON。您需要调用响应的Body#json方法来实际访问JSON内容。另请注意,它返回一个解析为响应的JSON内容的promise:

代码语言:javascript
运行
复制
fetch('…', { … })
  .then(res => res.json())
  .then(json => {
    console.log(json.msg);
  });

此外,我建议将HTTP状态代码与JSON一起发送,而不是使用ok属性。这是一种标准方式,并通过Response对象提供了内置支持:

代码语言:javascript
运行
复制
res.status(200).json({ … });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51790028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档