在同一 Fetch POST API 调用中返回 JSON
Returning JSON within the same Fetch POST API call
我目前有一个基于 Node.js 的 Express 框架构建的 Web 应用程序。
我现在正在构建一个需要执行用户登录的 React Native 应用程序。为此,我创建了一个 mongo-helpers.js
文件,它将简单地执行对 localhost:3000/api 和 return JSON 的 api 调用。到目前为止,我在拨打 GET
电话和接收数据时没有遇到任何问题,但这是我的问题和我想做的事情:
Objective:按下登录按钮时(在 React Native 应用程序中)对 localhost:3000/[ 进行 API 调用=51=],将 username
和 password
传递到 fetch
API POST
请求的 body
中。如果用户已登录,则发回用户的 Mongo 文档。
问题:虽然我能够发出 API Post 请求并成功登录用户,但我无法发回用户的Mongo 文档 res.json(user)
这是我的代码:
快递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))
});
React 本机应用程序: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);
})
}
)
};
我正在记录 response
,这是它显示的内容。其中没有用户数据
首先使用 return 响应然后回调。
您需要调用 json 函数,它会 returns 一个 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);
})
}
我目前有一个基于 Node.js 的 Express 框架构建的 Web 应用程序。
我现在正在构建一个需要执行用户登录的 React Native 应用程序。为此,我创建了一个 mongo-helpers.js
文件,它将简单地执行对 localhost:3000/api 和 return JSON 的 api 调用。到目前为止,我在拨打 GET
电话和接收数据时没有遇到任何问题,但这是我的问题和我想做的事情:
Objective:按下登录按钮时(在 React Native 应用程序中)对 localhost:3000/[ 进行 API 调用=51=],将 username
和 password
传递到 fetch
API POST
请求的 body
中。如果用户已登录,则发回用户的 Mongo 文档。
问题:虽然我能够发出 API Post 请求并成功登录用户,但我无法发回用户的Mongo 文档 res.json(user)
这是我的代码:
快递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))
});
React 本机应用程序: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);
})
}
)
};
我正在记录 response
,这是它显示的内容。其中没有用户数据
首先使用 return 响应然后回调。
您需要调用 json 函数,它会 returns 一个 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);
})
}