我写了一个nodejs Server。
app.get("/admin", function (req, res) {
var connection, value;
connection = mysql.createConnection({
host: "******",
user: "*****",
password: "****",
database: "YaAMP",
insecureAuth: true
});
value = mySQLgetValue("SELECT property, value FROM config WHERE property = 'primeMult'", connection);
console.log("Return Value" + value); //returns "[object Object]"
connection.end();
return res.render("admin", {
title: "YaAMP"
});
});
一个mySQLgetValue
函数从MySQL数据库中获取一个值,该值应从数据库中返回一个特定的值。
mySQLgetValue = function (queryString, connection) {
var value;
value = 0;
return connection.query(queryString, function (err, rows, fields) {
console.log("Value " + rows[0].value); //Returns correct value
return value += rows[0].value;
});
};
console.log
函数中的mySQLgetValue
从数据库返回正确的值。但是函数调用返回Object
并且console.log
打印“[object Object]”。
有什么问题?
答案 0 :(得分:5)
console.log()
是可变参数,因此请使用逗号代替+
。
console.log("Return Value", value);
+
执行字符串连接,调用对象上的.toString()
,这就是您获得[object Object]
的原因。
您无法从传递给return
的回调中获取connection.query
值,因为您不是调用该函数的那个。
相反,为函数定义另一个参数以接收在传递给connection.query
的回调中调用的回调函数。这将替换return
语句。
app.get("/admin", function (req, res) {
var connection, value;
connection = mysql.createConnection({
host: "******",
user: "*****",
password: "****",
database: "YaAMP",
insecureAuth: true
});
var q = "SELECT property, value FROM config WHERE property = 'primeMult'";
// Pass a callback-----------------v
mySQLgetValue(q, connection, function(val) { console.log(val); });
connection.end();
return res.render("admin", {
title: "YaAMP"
});
});
// callback parameter ------------------------v
mySQLgetValue = function (queryString, connection, callback) {
var value;
value = 0;
return connection.query(queryString, function (err, rows, fields) {
console.log("Value " + rows[0].value);
// Invoke your callback
callback(value += rows[0].value);
});
};