将node.js查询结果传递给全局变量

时间:2019-10-08 20:22:39

标签: javascript node.js

我似乎无法找出将查询语句的结果传递给全局变量的正确方法,以便我可以动态配置jsganntimproved图表。有人对我做错什么有任何想法吗?

在下面的代码中,console.log(taskItem)为空白,但是如果我将其移至setValue函数中,它将按预期工作。

当前taskitem变量被定义为const,但是我尝试了var和global。似乎都没有得到我需要的东西。

const taskitem = [];

con.query("SELECT * FROM projects", function (err, result, fields){
  if(err) {
    throw err;
  } else {
    setValue(result);
  }
});

function setValue(value) {
            if (value.length){
                        var i;
                        for (i=0; i<value.length; i++){
                                    taskitem.push({
                                                pID: value[i].Project_ID,
                                                pName: value[i].Phase_Description,
                                                pStart: value[i].Est_Start_Date,
                                                pEnd: value[i].Est_Comp_Date,
                                                pPlanStart: value[i].Est_Start_Date, 
                                                pPlanEnd: value[i].Est_Comp_Date,
                                                PClass: "ggroupblack",
                                                pLink: "",
                                                pMile: "",
                                                pRes: "",
                                                pComp: value[i].Billed / value[i].Spent,
                                                pGroup: "",
                                                pParent: 0,
                                                pOpen: 1,
                                                pDepend: "",
                                                pCaption: "",
                                                pCost: "",
                                                pNotes: "",
                                                pBarText: ""
                                    })

                        }
            }
}

console.log(taskitem);

'''

1 个答案:

答案 0 :(得分:0)

问题在于您拨打console.log()的时间 异步代码将稍后在taskItem内设置值。 将console.log(taskItem)移到function setValue内部应该可以解决!