node.js - 我无法在 node.js 中保存请求请求的响应
问题描述
我创建了一个接收邮件和通行证的登录功能,以接收jwt
. 我尝试过该函数返回jwt
但我没有成功。
这是我开发的方法,它有一个发送mail
和pass
参数的发布请求。在resp
变量中我尝试保存请求响应,但是在调用它打印的函数时:
不明确的。
login(mail, pass) {
var options = {
'method': 'POST',
'url': 'https://inventario.demos.adlnetworks.com/api/login',
'headers': {
'Content-Type': 'application/json'
},
body: JSON.stringify({ "email": mail, "password": pass })
};
var resp;
var req = request(options, function(error, response) {
if (error) throw new Error(error);
resp = response.body;
});
return resp;
}
解决方案
问题是“请求”是一个异步函数。你不能这样做
var resp;
var req = request(options, function(error, response) {
if (error) throw new Error(error);
resp = response.body;
});
return resp;
因为“resp”总是未定义的。你需要做这样的事情
var resp;
var req = request(options, function(error, response) {
if (error) throw new Error(error);
return response.body;
});
但这对你不起作用。 简短而简单的解决方案是更改库以发出 http 请求,并使用“async”和“await”轻松使用异步函数。
例如:
const fetch = require('node-fetch');
async function main(){
const data = await login();
console.log(data);
}
async function login(){
const url = "https://jsonplaceholder.typicode.com/posts";
const data = {
title: 'foo22222',
body: 'ba222r',
userId: 1
};
const response = await fetch(url, {
method: 'POST',
body: JSON.stringify(data),
headers: {
"Content-type": "application/json; charset=UTF-8"
}
});
const json = await response.json()
return json;
}
main();
在这种情况下,我使用“ node-fetch ”库并使用创建帖子并返回其响应的后端(在登录功能中)。
推荐阅读
- react-native - 反应原生的同一页面内的链接
- swift - func 正在重置平移手势的位置
- javascript - 会话存储不保存
- uwp - UWP:为什么我不能让 ListView.ItemContainerStyle 填充为零?
- java - 打开失败:ENOENT Android R
- r - (R)我无法将其他库导入我的 R 包
- android - 如何使用 Kotlin 和正确的 RequestBody.create 方法上传最新改造版本的图像?
- kubernetes - 针对 k8 pod 内的 pid 运行 linux 命令
- java - 使用 while 或 do-while 循环查找闰年
- javascript - 打字时如何替换双括号之间的字符串?