Javascript Node.js Knex SQL插入太慢

Javascript Node.js Knex SQL插入太慢,javascript,mysql,sql,node.js,Javascript,Mysql,Sql,Node.js,我有一个基本的登录系统,可以执行以下操作: 检查用户名是否存在(正常) 插入用户名 插入后,我选择插入的用户名的id。这在第一次登录时是正确的,但是当我注销并使用新用户名登录时,插入速度太慢,导致我的select抛出异常,因为插入尚未完成。我怎样才能解决这个问题 我的代码: Database.js: getPlayerByName (username) { return this.knex("penguins").first("*").where("username", userna

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

  • 检查用户名是否存在(正常)
  • 插入用户名
插入后,我选择插入的
用户名的
id
。这在第一次登录时是正确的,但是当我注销并使用新用户名登录时,插入速度太慢,导致我的select抛出异常,因为插入尚未完成。我怎样才能解决这个问题

我的代码:

Database.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)
    })
}
Login.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中使用WAIT,并让用户执行这两种方法同步

如何使用async和WAIT for knex?有推荐信吗?我没有用knex,但我想它会给你一个承诺,你可以用这个