在同一个提取POST API调用中返回JSON

我目前有一个基于Node.js的Express框架构build的Web应用程序。

我现在正在构build一个需要执行用户login的React Native应用程序。 为此,我创build了一个mongo-helpers.js文件,它将简单地执行api调用localhost:3000 / api并返回JSON。 到目前为止,我没有任何问题进行GET调用和接收数据,但是这是我的问题,我想要做什么:

目标 :按下loginbutton(在React Native应用程序中),调用localhost:3000 / api / login,将usernamepassword传递到fetch API POST请求的body中。 如果用户login,则发回用户的Mongo文档。

问题 :虽然我能够发出API Post请求并成功login用户,但我无法用res.json(user)发送用户的Mongo文档。

这是我的代码:

Express WEB APP: routes / api / api.js

 // POST and login user router.post('/login', (req, res) => { user.findOne({name: req.body.name, password: req.body.password}) .then((user) => { console.log(user); res.json(user) }) .catch((error) => res.json(error)) }); 

反应本机应用程序: mongo-helpers.js

 // Returns a promise // if login succeeds then return the user // if login fails return error exports.login = (name, password) => { return new Promise( (resolve, reject) => { fetch(APP_SERVER_URL+'/login', { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify({name, password}) }).then((response) => { console.log('Response', response); }).then((data) => { console.log(data); // returns undefined :( resolve(data); }).catch((error) => { console.log('Error', error); // no error is returned reject(error); }) } ) }; 

我正在loggingresponse ,这是它显示。 里面没有用户数据

POST请求后返回响应对象的图像

你需要调用json函数,它会返回一个promise,试试:

 fetch(APP_SERVER_URL+'/login', { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify({name, password}) }).then((response) => { response.json().then((data) => { console.log(data) }); }).catch((error) => { console.log('Error', error); // no error is returned reject(error); }) } 

https://developer.mozilla.org/en-US/docs/Web/API/Body/json

在第一个callback中使用返回响应。