簡體   English   中英

返回變量 MySQL 的 NodeJS 問題

[英]NodeJS problem with returning variable MySQL

function status(s) {
    const n = parseInt(s.substr(1));
    var o = '';
    switch(s[0]) {
        case 'c':
            c.query("SELECT * FROM chapters WHERE id='"+n+"' LIMIT 1", function(e, r) {
                if (e) throw e;
                o = r[0].t;
            });
            break;
    };
    return o;
};

console.log(status('c1'));

如何在查詢中從 function 中創建此返回變量“o”?

您需要使用 Promise。 這是一個例子。 我還將程序流控制重構為功能級別:

const makeQuery = s => 
    `SELECT * FROM chapters WHERE id='${parseInt(s.substr(1))}' LIMIT 1`

const doQuery = s => new Promise((resolve, reject) => c.query(
               makeQuery(s), 
               (e, r) => e ? reject(e) : resolve(r[0].t)));

const status = s => 
     s[0] === 'c' ? 
        doQuery(s) : 
        Promise.resolve(undefined)

status('c1').then(console.log);

如果查詢 function 具有 Promise 接口以及您目前使用的錯誤優先回調接口,則您可以使用asyncawait執行相同的操作。

好的,非常感謝。 我已經重寫了所有代碼,以便它發送兩個請求,第二個請求是在接收到第一個請求的數據后,然后將這個 function 踢出去,但很可能我將來可能需要了解這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM