1

私はnodejsサーバーを書きました。

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、DB から特定の値を返す必要がある 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、DB から正しい値を返します。しかし、関数呼び出しは を返し、"[object Object]"Objectを出力します。console.log

なにが問題ですか?

4

1 に答える 1

5

は可変長であるため、のconsole.log()代わりにコンマを使用します+

console.log("Return Value", value);

は、オブジェクトで+を呼び出す文字列連結を.toString()行います。これが、 を取得していた理由です[object Object]


その関数を呼び出すのはあなたではないため、 にreturn渡すコールバックから値を取得することはできません。connection.query

代わりに、関数に別のパラメータを定義して、 に渡されたコールバック内で呼び出されるコールバック関数を受け取りますconnection.queryreturnこれにより、ステートメントが置き換えられます。

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);
    });
};
于 2013-04-29T14:52:43.853 に答える