请教一下各位大佬关于mysql和Fibers配合使用的问题
发布于 6 年前 作者 522422474 2198 次浏览 来自 问答

因为特殊原因,不能使用回调方式查询数据库所以使用了Fibers 但是我执行的时候Fibers会报错, /////////////////////////////////////////////////////////////////////////////////////////////////////

以下为报错提示 Error: yield() called with no fiber running at Object.exports.query (/Users/computer/Desktop/server/utils/dbpool.js:47:17) at Object.exports.update_num_turns (/Users/computer/Desktop/server/utils/dbsync.js:507:22) ///////////////////////////////////////////////////////////////////////////////////////////////////// 以下为数据库链接代码 /////////////////////////////////////////////////////////////////////////////////////////////////////

var MYSQL=require(“mysql”); var FIBERS = require(‘fibers’);

var pool = null;

exports.init = function(config){ pool = MYSQL.createPool({ host: config.HOST, user: config.USER, password: config.PSWD, database: config.DB, port: config.PORT, }); }; exports.query = function(sql,print){ if(print){ console.log(sql); } var fc = FIBERS.current; var ret = { err:null, vals:null, rows:null, fields:null, };

pool.getConnection(function(err,conn){
    console.log("query" + conn.code);
    if(err){
        ret.err = err;
        console.log(err);
        fc.run();
    }
    else{
        conn.query(sql,function(qerr,vals,fields){
            //释放连接
            conn.end();
            ret.err = qerr;
            ret.vals = vals;
            ret.rows = vals;
            ret.fields = fields;
            fc.run();
        });
    }
});

FIBERS.yield();
return ret;

};

///////////////////////////////////////////////////////////////////////////////////////////////////// 以下为数据库查询语句 ///////////////////////////////////////////////////////////////////////////////////////////////////// exports.update_num_turns = function (roomId, numTurns) { var sql = ‘update t_rooms set num_of_turns = {0} where id = “{1}”’; sql = sql.format(numTurns,roomId); var req = dbpool.query(sql,true); if(ret.err){ return false; } return ret.rows.affectedRows > 0; }; ///////////////////////////////////////////////////////////////////////////////////////////////////// 手机不好排版各位大佬见笑了。 先在此谢谢了

From Noder

回到顶部