如果这已经被问了一百次,真的很抱歉,但我无法适应我发现的任何以前的 SO 解决方案来解决我的问题。其中很多都是特定于 Ajax 的。
我是 Node 异步回调的新手,因此我遇到了从异步回调正确“返回”数据的问题。在我的示例中,我试图返回CharList. SQL 查询和数据都是有效的,所以这些都不太重要。
我试过简单地返回值,我很快了解到这是不可能的,并且违背了异步回调的目的。
编辑:我还尝试CharList在函数外部定义,然后通过函数分配值,但CharList在函数完成后记录会打印一个空数组。
// index.js
const sql = require('./sql')
const query = require('./queries');
function AllCharsToArray() {
query.character.GetAllChars(function(result) {
let CharList = [];
for (var i in result) {
CharList.push(result[i]._Name)
}
})
}
/*
{
"characters":
[
{"_Name":"Charname 1"},
{"_Name":"Charname 2"},
{"_Name":"Charname 3"}
]
}
*/
// queries.js
const mysql = require('mysql');
const sql = require('./sql')
function GetAllChars(callback) {
sql.conn.query(`SELECT _Name FROM characters;`, function(error, results, fields) {
return callback(results); // returns RowDataPacket
})
}
exports.character = {
GetAllChars: GetAllChars,
}
最终,我试图在CharList外部可用,AllCharsToArray以便我可以将它们导出到 express.js 路由。
牧羊人nacy
喵喔喔
相关分类