gpt4 book ai didi

javascript - 如何将 xml2js 响应传递给 node.js 路由中的变量?

转载 作者:行者123 更新时间:2023-12-02 23:45:02 24 4
gpt4 key购买 nike

我使用 xml2js 和 node.js 从 API 检索数据,但我只希望代码在激活“/testpage”路由时运行,然后将 api 响应分配给变量并传递它与 testpage.ejs 上的脚本一起,其最终目标是将对象/变量内容打印到控制台。

我面临的问题是,我使用上述代码得到了“未定义”的浏览器控制台响应。

如果我将代码放在路由之外,将响应分配给一个变量,然后将该变量传递给测试页脚本,那么它就可以正常工作。

此时我假设这可能是一个异步问题,但我不确定,甚至不确定如何解决它。

// Node.js
const requestPromise = require('request-promise'),
xml2js = require('xml2js').parseString,
express = require("express"),
app = express();

const port = 3200,
apiURL = 'https://api.exampleapi.com';

app.set("view engine", "ejs");

app.use('/public', express.static(__dirname + "/public"));

app.get("/testpage", function(req, res){

var myApiObject; // To store api response

requestPromise.post(apiURL, (error, response, body) => {
if(error){
console.log(error);
return error;
}
}).then( (body) => {
xml2js(body, (err, result) => {

if(err){
console.log(err);

} else {

myApiObject = result;
return result;
}
});
});

res.render("testpage", {myApiObject: myApiObject});
});


app.listen(process.env.PORT || port, function(){
console.log("Server is running...");
});

<!--testpage.ejs-->
<html>
<head>

<title>
</title>

</head>

<body>

<p>This is the testpage</p>

<script>
var myObj =<%-JSON.stringify(myApiObject)%>
console.log(myObj);
</script>

</body>

关于我做错了什么有什么想法吗?

最佳答案

您需要在收到 API 调用的响应后呈现页面。像这样更改您的代码:

requestPromise.post(apiURL, (error, response, body) => {
if(error){
console.log(error);
return error;
}
}).then( (body) => {
xml2js(body, (err, result) => {

if(err){
console.log(err);

} else {
res.render("testpage", {myApiObject: result});
return result;
}
});
});

关于javascript - 如何将 xml2js 响应传递给 node.js 路由中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55892222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com