gpt4 book ai didi

javascript - 如何从 Express 中间件函数传递值?

转载 作者:太空宇宙 更新时间:2023-11-04 02:18:42 25 4
gpt4 key购买 nike

我是 Javascript/Node/Express 的初学者。

我正在尝试从 Facebook Graph API 获取一些数据,并具有 Express 中间件功能,如下所示。

我想要实现的是:-

从 Facebook 获取用户身份验证 token - 完成将该用户身份验证 token 传递给中间件函数 - 完成检索数据并将其作为图表显示在屏幕上 - 使用 Chart.js 进行前端图表,但我无法将这些数据发送到那里。

function getFBData(req, res, next){
var impressions = [];
var dates = [];
graph.setAccessToken(req.user.facebook.token);
//graph.get("me/accounts", function(err,res){
// console.log(res);
//});

//var impressions = [];
//var dates = [];
graph.get("{page-id-placeholder}/insights/page_impressions/day",function(err,res){

//console.log(res);
//console.log(res.data[0]);
for(i=0; i<res.data[0].values.length; i++){
setArrayData(impressions, res.data[0].values[i].value);
setArrayData(dates, res.data[0].values[i].end_time);
}

console.log("inside!!");
console.log(impressions);
console.log(dates);

});

function setArrayData(array, value){
console.log("Pushing " + value + "into " + array);
array.push(value);
console.log("Now the array contains " + array);
}

console.log("Impressions = " + impressions);
console.log("Dates = " + dates);
res.locals.FBData = [impressions, dates]
console.log(res.locals.FBData);
return next();

}

现在我面临的问题是在res.locals.FBData中设置时数组为空

我认为我在基本 javascript 中做错了一些事情,但无法确定它是什么。

编辑:- 我可以通过函数 setArrayData 以及 graph.get 语句 console.log 看到数组中设置的值,但数组外部为空。

我的假设是数组展示次数和日期对于该函数来说都是全局范围的,并且不应该重置。

我哪里出错了?

最佳答案

Graph.get 是异步的。你需要这样做:

function getFBData(req, res, next){
var impressions = [];
var dates = [];

graph.setAccessToken(req.user.facebook.token);

graph.get("{page-id-placeholder}/insights/page_impressions/day",function(err,res){

for(i=0; i<res.data[0].values.length; i++){
impressions.push(res.data[0].values[i].value);
dates.push(res.data[0].values[i].end_time);
}

console.log("Impressions = " + impressions);
console.log("Dates = " + dates);
res.locals.FBData = [impressions, dates]
console.log(res.locals.FBData);
return next();

});

}

关于javascript - 如何从 Express 中间件函数传递值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34527751/

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