javascript - Node.js Knex SQL 插入太慢

标签 javascript mysql sql node.js

我有一个基本的登录系统,可以执行以下操作:

  • 检查用户名是否存在(正常)
  • 插入用户名

插入后,我选择插入的用户名id。第一次登录时这是正确的,但是当我注销并使用新用户名登录时,插入速度太慢,导致我的选择抛出异常,因为插入尚未完成。我该如何解决这个问题?

我的代码:

数据库.js:

getPlayerByName (username) {
    return this.knex("penguins").first("*").where("username", username)
}
getPlayerExistsByName (username) {
    return this.knex("penguins").where("username", username).select("username")
}
insertPlayer (username) {
    return this.knex("penguins").insert({username: username}).then(() => {
        Logger.info(`Inserted ${username}`)
    }).catch((err) => {
        Logger.error(err)
    })
}

登录.js:

function handlePlayer (username, res) {
    database.getPlayerExistsByName(username).then(result => {
        if (result.length != 1) { // Username does not exist
            database.insertPlayer(username) // Insert username
            database.getPlayerByName(username).then(penguin => {
                return write(`&id=${penguin.id}&m=${penguin.mod}${Errors.OK}`, res) // I need the id here
            })
        } else {
            return write(Errors.NAME_UNAVAILABLE, res)
        }
    })
}

最佳答案

尝试在then的回调中使用async函数,并在insert中使用await并让用户同步执行这2个方法

关于javascript - Node.js Knex SQL 插入太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51337324/

相关文章:

javascript - 使用花括号 + angularjs 填充下拉列表

php - 保存关联3个模型

mysql - 如何按日期 "merge"两个结果集

MySQL select 太大(连接三个表)

javascript - 使用回调()加载多个图像

javascript - 输出原始数组的反向和连接函数

php - 为用户显示适当的错误消息

sql - 如何更新 postgres 中时间戳字段的一部分?

javascript - 选择长度与 options.length

c++ - fatal error C1083 : Cannot open include file: 'mysql_connection.h' in release mode