2017-08-01 137 views
-1

我在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

回答

0

聲明頂部的變量 var categories = {};

並在方法GetCustomers()中賦值。

但是,這不是正確的方法來做到這一點,你必須使用回調方法並在回調方法中返回數據。

0

我認爲你需要將賦值代碼行推入回調函數。 您的代碼可能是這樣的:

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