【发布时间】:2014-03-24 23:48:34
【问题描述】:
我需要从一个函数返回一个值,该函数从查询中获取其信息。我在将信息从查询的匿名函数传递到容器函数时遇到了一些问题。
我尝试在更高范围(容器函数)中创建一个数组,并让查询函数根据结果写入数组,但这似乎不起作用。我还尝试将数组传递给查询的匿名函数。这似乎也不起作用。
这是我的函数(在 Node 中执行):
function retrieveSales(connection,timeFrame) {
var sales = new Array();
connection.query('select * from sales_entries where date BETWEEN ? AND ?',
timeFrame,
function (err, rows, fields, sales) {
if (err) return callback(new Error('Failed to connect'), null);
connection.end();
for (x = 0; x < rows.length; x++) {
sales.push(rows[x]);
}
});
console.log('Sales Returned: ' + JSON.stringify(sales, null, 4));
return sales;
}
导致'cannot call method 'push' of undefined。
我应该如何正确地写入sales 数组,以便可以使用retrieveSales() 返回它?
【问题讨论】:
-
connection.query()是异步! -
那么,我不能从中返回一个值?我应该如何获得允许我将返回值传递给另一个函数的结果?
-
异步再次来袭...耶
-
您的函数作为参数的
sales覆盖了您在更高范围内定义的sales。 -
@jt0dd - 你可能想要一个承诺 - 节点支持它们,它会让你的代码看起来不错。 howtonode.org/promises
标签: javascript node.js function scope node-mysql