【发布时间】:2020-01-13 20:31:03
【问题描述】:
我早些时候发布了一个问题,但我发现我关注的是错误的问题,因为我认为我的问题出在数据库方面,但问题似乎与“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 if 它不是第一次而不是 render 但它仍然不起作用......
非常感谢大家花时间帮助我,我真的很感激!
【问题讨论】:
标签: javascript mysql node.js server pug