我使用promises实现了自定义本地策略,但即使在数据库中创建了新用户,该函数也不会重定向。
这是我的数据库处理程序:
std::vector<vector<int>> someVec;
someVec.resize( n , std::vector<int>(3));
这是控制器:
export function saveUser(email, password) {
return new Promise((resolve, reject) => {
database
.select('*')
.from('user')
.where({ email })
.then(results => {
const user = results[0];
if (user) {
console.log('found matching username');
return reject(new Error('Email already taken'));
} else {
bcrypt
.hash(password, SALT_ROUNDS)
.then(hash => {
// TODO: Require more information on initial signup?
const newUser = {
email,
date_of_birth: new Date(),
first_name: 'First',
last_name: 'Last',
phone_number: '45555555',
hashed_password: hash,
};
database
.insert(newUser, 'id')
.into('user')
.then(id => {
newUser.id = id[0];
console.log('new user successfully created');
return resolve(null, newUser);
})
.catch(error => {
console.log('database insertion error', error);
return reject(error);
});
})
.catch(error => {
console.log('hashing error', error);
return reject(error);
});
}
})
.catch(error => {
console.log('database email search error', error);
reject(error);
});
});
}
处理注册的路由:
passport.use(
'local-signup',
new LocalStrategy(
{
usernameField: 'email',
passwordField: 'password',
passReqToCallback: true,
},
(req, email, password, done) => {
saveUser(email, password)
.then(user => done(null, user))
.catch(error => done(null, false, error));
},
),
);
当我使用Postman测试API时,成功创建了一个新用户并且成功创建了新用户&#34;打印出来,但用户仍然被重定向到failureRedirect路线。
你能发现我的错误吗?
答案 0 :(得分:0)
简单的复制粘贴拼写错误:
return resolve(null, newUser);
=&gt; return resolve(newUser);