gpt4 book ai didi

javascript - 如何返回 MySQL 查询的回调并推送到 Node.js 中的数组?

转载 作者:行者123 更新时间:2023-11-29 02:15:23 24 4
gpt4 key购买 nike

我正在尝试在一个表上使用 MYSQL 查询来填充一个数组,该表获取所有行并将这些行推送到 WordList。

我可以很好地打印方法中的每一行,但是当我超出该方法的范围时,它不会将任何内容推送到 Wordlist。

function getParrotMessage() {

wordList = [];

console.log(wordList);

// Implementation
getWord('result', function (err, result) {

console.log(result); // works, prints the row data in MySQL table
wordList.push(result); // doesn't work

});

console.log(wordList);
return parrot_message;
}

// Method
function getWord(word, callback) {
var query = con.query('SELECT * FROM word_table');
query.on('result', function (row) {
callback(null, row.word);
});
};

词表:[]

wordlist 显示为一个空数组。

任何帮助将不胜感激,只是从 javascript 和 node.js 开始

最佳答案

您的方法 getWord 是异步!

因此第二个 console.log(wordList); 在返回任何结果之前打印(甚至在你第一次调用 wordList.push(result); 之前) )

此外,由于您在 getParrotMessage 函数中查询 db(异步),因此您需要使用回调(或 Promise 或其他任何可以使用的东西)而不是 return 语句。

function getParrotMessage(callback) {

getWord('result', function (err, result) {

if(err || !result.length) return callback('error or no results');
// since result is array of objects [{word: 'someword'},{word: 'someword2'}] let's remap it
result = result.map(obj => obj.word);
// result should now look like ['someword','someword2']
// return it
callback(null, result);

});
}

function getWord(word, callback) {
con.query('SELECT * FROM word_table', function(err, rows) {
if(err) return callback(err);
callback(null, rows);
});
};

现在这样使用它

getParrotMessage(function(err, words){
// words => ['someword','someword2']

});

关于javascript - 如何返回 MySQL 查询的回调并推送到 Node.js 中的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40639589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com