gpt4 book ai didi

mysql - Node JS mysql插入查询使变量值未定义

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

我有以下一段代码,它从 Web url 中提取数据,将其显示给用户并更新 mysql 数据库 - 除了一个小问题外,它工作正常:

function RunScrapingIndexWatch() {
myhttp.get('http://www.url.com',
function (_html) {
if (_html && _html.length > 10) {
news.indexwatch = [];
$ = cheerio.load(_html);
status = false;
$('td.text21').each(function () {
status = true;
var price1 = parseFloat($(this).text().substr($(this).text().indexOf("Nifty :") + 7, 7).trim());
var abc = stringHelper.getIndiaTime();
var IWTime = abc.toLocaleTimeString();
news.indexwatch.push({
'price1': price1,
'IWTime': IWTime,
});


var post = {
'price1': price1,
'IWTime': IWTime
};




connection.query('INSERT INTO IW SET ?', post, function (err,result){
if (err)
{console.log("IW sql insert error : " +price1 +IWTime);}
else {
console.log("IW data inserted : " +price1 +" | " +IWTime);
}
});



});
if (status) {

io.emit('news', news);

}
if (timerIndexWatch) {
clearTimeout(timerIndexWatch);
}

timerIndexWatch = setTimeout(RunScrapingIndexWatch, config.DelayExtractIndexWatch);
}
});
}

问题是,在网页显示(由上面的代码“news.indexwatch.push”生成)中,IWTime 的值短暂地显示为未定义 - 我猜这是在 mysql 连接查询运行时发生的。 mysql 数据库正在正确更新。

有没有办法在 io.emit 新闻操作之后运行 mysql 插入查询?有什么建议吗?

最佳答案

除非您可以使用 .emit() 函数的回调,否则不行。

为什么不等到 MySQL 完成操作后才发出信息,方法是将 .emit() 放入 connection.query() 回调中:

function RunScrapingIndexWatch() {

myhttp.get('http://www.url.com', function(_html) {

if (_html && _html.length > 10) {
news.indexwatch = [];
$ = cheerio.load(_html);
status = false;

$('td.text21').each(function() {

status = true;
var price1 = parseFloat($(this).text().substr($(this).text().indexOf("Nifty :") + 7, 7).trim()),
abc = stringHelper.getIndiaTime(),
IWTime = abc.toLocaleTimeString(),
post = {
'price1': price1,
'IWTime': IWTime
};

connection.query('INSERT INTO IW SET ?', post, function(err, result) {
if (err) {
console.log("IW sql insert error : " + price1 + IWTime);
} else {
console.log("IW data inserted : " + price1 + " | " + IWTime);
}

news.indexwatch.push(post);

if (status) io.emit('news', news);

}); // connection.query()

if (timerIndexWatch) clearTimeout(timerIndexWatch);
timerIndexWatch = setTimeout(RunScrapingIndexWatch, config.DelayExtractIndexWatch);

}); // $.each()
} // if (_html && ...)
}); // myhttp.get()
}; // RunScrapingIndexWatch

关于mysql - Node JS mysql插入查询使变量值未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33755749/

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