繁体   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