我在数据库中有一个表,其中包含bad_words
列表和good_words
列表,用于替换输入字符串中的这些bad_words
。这就是我的做法,参数comment
将针对bad_words
进行测试,并替换为相应的good_words
。
function testComment(comment) {
var words = comment.split(" ");
var resultString = "";
words.forEach(function(word){
connection.query('select good_words from words where bad_words = ' + connection.escape(word), function(err, result){
if(err){
console.log(err);
return;
}
if(result.length != 0){
resultString = comment.replace(word, result[0].good_words));
}
});
});
return resultString;
}
但是,这只返回空字符串(原始初始值)。这是因为函数在forEach
完成之前返回。我如何确保1)我正在修改resultString
而不是在forEach
循环中创建新实例?我需要使用this.resultString = ...
吗?
2)如何在forEach
执行完毕后才返回?