mysql 在Socket.IO连接上运行数据库查询[重复]

icomxhvb  于 2023-01-29  发布在  Mysql
关注(0)|答案(1)|浏览(136)
    • 此问题在此处已有答案**:

(41个答案)
2天前关闭。
我是新的表达和套接字io,我正试图建立一个简单的多人游戏这是我的服务器上连接代码:

io.on('connection', function (socket) {

  var characterID = socket.request._query['character'];

  console.log("Character ID: " + characterID);

  var characterData = null;

  db.query(`SELECT * FROM characters WHERE id = ${characterID} LIMIT 1`, (err, result, fields) => {
    if ( err ) throw err;
    console.log("Retrieved Data", result, fields);
    characterData = result[0];
  });

  console.log("Character Data", characterData);

});

输出中有一行以"Retrieved data"开头,但它甚至没有显示,查询是否根本没有运行?

ctzwtxfj

ctzwtxfj1#

考虑到异步性,我建议您生成一个返回字符的函数,然后将其传递给变量

const getCharacterById = (characterID) => {
    return new Promise((resolve, reject) => {
        db.query(`SELECT * FROM characters WHERE id = ${characterID} LIMIT 1`, (err, result) => {
            if (err) {
                reject(err);
            } else {
                resolve(result);
            }
        });
    });
};

相关问题