我正在使用React。为了从MySQL数据库查询一些数据,我创建了另一个NodeJS后端服务器并执行了此代码。
var con = mysql.createConnection({
host: "localhost",
port: "3306",
database: "my_books",
user: "root",
password: "pokemon2345"
});
con.connect();
var sql = JSON.parse(req.query.msg);
console.log(sql);
var answer = con.query(sql);
con.end();
res.send(JSON.stringify(answer));
这是我在主React应用程序中的代码。
var request = new XMLHttpRequest();
var jsql = JSON.stringify(sql);
request.onreadystatechange = function() {
debugger;
if (this.readyState == 4 && this.status == 200) {
var response = this.responseText;
toast.success(typeof response);
}
};
request.open(
"GET",
"http://localhost:3001/retrieve_books" + "?msg=" + jsql,
true
);
request.send(jsql);
我无法弄清楚为什么会发生此错误,以及我的代码是如何循环的? 预先感谢!
答案 0 :(得分:2)
循环JSON表示,对象内部有对对象的引用,这使得JSON.stringify无法实现。
在您的情况下,可能是res.send(JSON.stringify(answer))。 con.query(sql)的响应可能不是一个简单的对象。
此外,该函数是异步的,并且希望通过回调获得答案(我假设您正在使用mysqljs https://github.com/mysqljs/mysql)
提供更多细节以进一步解释,但是潜在的问题是变量“ answer”的值
答案 1 :(得分:0)
同意Dhananjai的回答。过去,我几次无意中发现了这个问题。我做了一个npm package来解决此问题并安全地对该对象进行字符串化。