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,但我想它会给你一个承诺,你可以用这个