我之前发布了一个问题,但是我发现我专注于错误的问题,因为我认为我的问题是在数据库方面,但是问题似乎出在“ res.render”上,因为它正在从中获取正确的数据。第一次调用后,数据库并没有被发送到我的前端。我之前在堆栈溢出中看到一个问题,说要解决此问题,而是发送一个完整的数组并在客户端进行迭代,但是该解决方案对我不起作用,因为我确保多个人可以在该位置使用该工具。同时,这就是为什么我在SQL查询中使用锁来确保一次一次完成此过程并且不复制数据的原因。
这是我的代码:
app.get('/', (req, res) => {
connection.query("LOCK TABLE data.train_data WRITE; SELECT * FROM data.train_data LIMIT 1; DELETE FROM data.train_data LIMIT 1; UNLOCK TABLES;",(err,rows) => {
if(err){
console.log('Error selecting tweets from Database...');
return;
}
console.log('Successfully received tweets from database');
res.render('index', {
title: 'Tweet Labeler',
data: rows[1]
});
});
这里的res.render块是我遇到麻烦的地方,因为我第一次知道它正确地发送了数据,但是每次之后似乎都无法正确发送。而且我相信这是因为我使用了此错误或者下面的我的javascript函数有问题,在这里我可能需要确保像正在刷新的数据一样……老实说,我不确定我的javascript怎么知道JSON.stringify(data)引用由res.render发送的数据?所以也许这也可能是一个问题:
script.
var data = !{JSON.stringify(data)};
function nextItem() {
data = !{JSON.stringify(data)};
console.log("The new data is:");
console.log(data[0]);
if (data){
//- document.getElementById("label").innerHTML= "Current Tweet ID: " + curIndex
document.getElementById("tweetText").innerHTML = data[0].tweet
}
}
function relClick(){
var xhr = new XMLHttpRequest();
var newData = {'tweet':data[0].tweet,'relevant':1};
var jsonData = JSON.stringify(newData);
xhr.open("POST","/",true);
xhr.setRequestHeader('Content-type','application/json');
xhr.send(jsonData);
console.log("Clicked Relevant");
xhr = new XMLHttpRequest();
xhr.open("GET","/",true);
xhr.send();
nextItem();
}
function irrClick(){
var xhr = new XMLHttpRequest();
var newData = {'tweet':data[0].tweet,'relevant':0};
var jsonData = JSON.stringify(newData);
xhr.open("POST","/",true);
xhr.setRequestHeader('Content-type','application/json');
xhr.send(jsonData);
console.log(jsonData);
console.log("Clicked Irrelevant")
nextItem();
}
rel.addEventListener('click',relClick);
irr.addEventListener('click',irrClick);
next.addEventListener('click', nextItem);
基本上,我知道它可以正常工作,但是数据有些问题,因为在托管服务器的控制台中,我正在打印查询结果,并且它是正确的,但是当我在浏览器控制台中将其打印出来时从页面最初打开到每次都在同一行,因此我知道它没有被更新。注意*我使用PUG做模板。
我什至不是第一次不是使用渲染而是使用if语句来使用send,但是它仍然不起作用...
非常感谢大家花时间帮助我,我真的很感激!
我还没有看到语法“ var data =!{JSON.stringify(data)}”