Passport.js无法同时更新数据库和/或生成错误

时间:2016-07-24 22:39:51

标签: javascript node.js authentication express passport.js

我正在使用passport.js实施本地注册策略,并且在获取基本的概念证明并运行时遇到了一些问题。我这个精确时刻的目标是,如果他们添加的电子邮件地址在数据库中不存在(db现已初始化并为空),并且成功时JSON消息传播到其屏幕,则能够注册新用户,当已经在数据库中输入电子邮件地址时收到错误,并显示相应的JSON失败消息。

我收到的错误是当我点击提交按钮同时填写了电子邮件地址和密码时,加载停止并且我在我的cmd上收到以下内容:

Executing (default): SELECT `id`, `username`, `email`, `password`, `createdAt`,
`updatedAt` FROM `Users` AS `User` LIMIT 1;

我认为它来自app.js的console.log(info)语句,但是没有对新用户名的数据库中的空表进行插入,也没有触发非独特电子邮件的错误

我有一些假设可能会发生这种情况:

1)查询数据库以确定用户是否在表中的方式存在问题。 (我已经做了各种排列来模拟在this link中间定义的./config/passport.js策略,但问题仍然存在)

2)需要更改signup.ejs属性和/或在将LocalStrategy作为对象传递给LocalStrategy之前,需要以不同的方式修改这些值。 (类似于1,我花了相当多的时间来修改属性字段,试图让它们符合Chris Sevilleja在上面链接中的实现以及官方的passport.js文档,但是没有发现任何东西在预期的方面有意义。)

App.js

enter image description here

Passport.js

enter image description here

signup.ejs

enter image description here

sequelize.js

enter image description here

1 个答案:

答案 0 :(得分:0)

您对DB的查询不正确。 使用承诺续集 http://docs.sequelizejs.com/en/latest/docs/getting-started/#promises

db.User.findOne({where: {email: email}})
.then(function(user){
   //do smth with user
})
.catch(function(error){
   //handle error
})