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."
}
};
我不能检索的函数值,并将其赋值给变量类别。
答
声明顶部的变量 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
目前还不清楚你问什么......当你执行'GetCustomers的()'函数?你如何使用'categories'?这显然不是所有的代码,所以我不确定你在问什么。 – jakerella
实际上,我有一个函数,我用GetCustomers的名称检索客户。 然后我想分配所有提取的客户到全局变量称为类别。我想知道如何在执行该功能后分配它。 –
仍然没有遵循......你只是问如何为JS中的变量赋值?像'categories.headquarters.facts.push(_customerName)'?? – jakerella