Nodejs将值分配给全局常量变量

问题描述:

我在nodejs中有一个函数,我从SQL数据库中提取客户,我需要将它分配给变量以用于进一步处理。Nodejs将值分配给全局常量变量

下面是我的代码:

function getCustomers() { 

    var i; 
    var conn = new sql.Connection(dbConfig); 
    var _customerName; 
    conn.connect().then(function() { 
     var req = new sql.Request(conn); 
     req.query("SELECT CustomerName FROM CUSTOMERS").then(function (recordset) { 
      //console.log(recordset); 
      for (i = 0; i <= recordset.length; i++) { 
       _customerName = String(recordset[i].NAMECUST); 
      } 
      return _customerName; 
      // conn.close(); 
     }) 
     .catch(function (err) { 
      console.log(err); 
      //conn.close(); 
     }); 
    }) 
    .catch(function (err) { 
     console.log(err); 
    }); 
    finalize(obj, function() { 
     return _customerName; 
    }); 


} 
//console.log(); 

const categories = { 
    "headquarters": { 
    "category": "headquarters", 
    "suggestion": "Headquarters", 
    "facts": [ 
     "Customer 1", 
     "Customer 2", 
     "Customer 3" 
    ], 
    "factPrefix": "Okay, here's a Customer fact." 
    } 


}; 

我不能检索的函数值,并将其赋值给变量类别。

+0

目前还不清楚你问什么......当你执行'GetCustomers的()'函数?你如何使用'categories'?这显然不是所有的代码,所以我不确定你在问什么。 – jakerella

+0

实际上,我有一个函数,我用GetCustomers的名称检索客户。 然后我想分配所有提取的客户到全局变量称为类别。我想知道如何在执行该功能后分配它。 –

+0

仍然没有遵循......你只是问如何为JS中的变量赋值?像'categories.headquarters.facts.push(_customerName)'?? – jakerella

声明顶部的变量 var categories = {};

并在方法GetCustomers()中赋值。

但是,这不是正确的方法来做到这一点,你必须使用回调方法并在回调方法中返回数据。

我认为你需要将赋值代码行推入回调函数。 您的代码可能是这样的:

const categories = { 
    "headquarters": { 
    "category": "headquarters", 
    "suggestion": "Headquarters", 
    "facts": [], 
    "factPrefix": "Okay, here's a Customer fact." 
    } 
function getCustomers() { 

    var i; 
    var conn = new sql.Connection(dbConfig); 
    var _customerName; 
    conn.connect().then(function() { 
     var req = new sql.Request(conn); 
     req.query("SELECT CustomerName FROM CUSTOMERS").then(function (recordset) { 
      //console.log(recordset); 
      for (i = 0; i <= recordset.length; i++) { 
       categories.headequaters.facts.push(recordset[i].NAMECUST) 
      } 
     }) 
     .catch(function (err) { 
      console.log(err); 
      //conn.close(); 
     }); 
    }) 
    .catch(function (err) { 
     console.log(err); 
    }); 
    finalize(obj, function() { 
     return _customerName; 
    }); 
} 
}; 
+0

不,这不起作用。 –

+0

对不起,实际上,您不必在循环完成后返回任何内容,类别中充满了客户数据。我编辑了答案 – thelonglqd