在 knex js 中查询用户和密码验证
query in knex js for users and password validation
我想使用模板中的数据(使用 handlebars 和 expressjs)使用 knex js 创建一个查询来验证用户。我创建了一个查询,然后将其添加到一个变量中,该变量在验证用户登录后。
关键是我在让 knex 查询做我想做的事情时遇到了麻烦,而且我不知道我做错了什么。
var usernameReq = req.body.username;
var passwordReq = req.body.password;
var pass;
knex('users').where({
username: usernameReq }).select('password').then(
function(result){
pass = result;
}).catch(function(error) {
console.log(error);
});
if (passwordReq === pass){
//login
}
Knex 使用异步的承诺。
if (passwordReq === pass)
超出了承诺。这意味着结果将不可用。
将 if
和所有依赖于查询结果的代码(例如 http 响应本身)放在 then(...)
.
中
另请注意,结果是一个对象数组,即使在引用单行的单列时也是如此。因此,要引用密码,您必须使用 result[0].password
var usernameReq = req.body.username;
var passwordReq = req.body.password;
knex('users')
.where({ username: usernameReq })
.select('password')
.then(function(result) {
if (!result || !result[0]) { // not found!
// report invalid username
return;
}
var pass = result[0].password;
if (passwordReq === pass) {
// login
} else {
// failed login
}
})
.catch(function(error) {
console.log(error);
});
我想使用模板中的数据(使用 handlebars 和 expressjs)使用 knex js 创建一个查询来验证用户。我创建了一个查询,然后将其添加到一个变量中,该变量在验证用户登录后。 关键是我在让 knex 查询做我想做的事情时遇到了麻烦,而且我不知道我做错了什么。
var usernameReq = req.body.username;
var passwordReq = req.body.password;
var pass;
knex('users').where({
username: usernameReq }).select('password').then(
function(result){
pass = result;
}).catch(function(error) {
console.log(error);
});
if (passwordReq === pass){
//login
}
Knex 使用异步的承诺。
if (passwordReq === pass)
超出了承诺。这意味着结果将不可用。
将 if
和所有依赖于查询结果的代码(例如 http 响应本身)放在 then(...)
.
另请注意,结果是一个对象数组,即使在引用单行的单列时也是如此。因此,要引用密码,您必须使用 result[0].password
var usernameReq = req.body.username;
var passwordReq = req.body.password;
knex('users')
.where({ username: usernameReq })
.select('password')
.then(function(result) {
if (!result || !result[0]) { // not found!
// report invalid username
return;
}
var pass = result[0].password;
if (passwordReq === pass) {
// login
} else {
// failed login
}
})
.catch(function(error) {
console.log(error);
});