护照 - 注册用户&传递信息

时间:2017-03-04 20:34:15

标签: node.js mongodb express npm passport.js

我正在使用Node / Express / Passport向我的网站注册新用户。很简单。我正在使用Mongoose来保存数据。

目标:我试图让一个人(未登录)回答几个问题。 (存储在vars中的答案)然后,一旦他们完成,我希望他们注册一个新帐户。

当他们注册时,我想将他们的用户名和密码以及他们答案中的数据传递给数据库。因此,目标是一键完成。这是我迄今为止没有运气的尝试。谢谢你的帮助!!

var Beliefs = mongoose.model("Beliefs", beliefsSchema);
//handle sign up logic
app.post("/quiz", function(req, res){
    var newUser = new User({username: req.body.username});
    User.register(newUser, req.body.password, function(err, user){
        if(err){
            req.flash("error", err.message);
            console.log(err)

        }
        passport.authenticate("local")(req, res, function(){
          req.flash("success", "Welcome to JobQuiz " + user.username);
          res.redirect("jobquiz"); 
        });
    });
});
    //Create Answers
    Beliefs.create(req.body.beliefs, function(err, newBeliefs){
    Beliefs.create(req.body.beliefs2, function(err, newBeliefs2){
        if(err){
            console.log(err)
        } else {
            newBeliefs.author.id = req.user._id;
            newBeliefs.author.username = req.user.username;
            newBeliefs.save();
            newBeliefs2.author.id = req.user._id;
            newBeliefs2.author.username = req.user.username;
            newBeliefs2.save();
            console.log("User is:" + req.user.username)
            console.log(req.body.beliefs)
            res.redirect("/elementsintro");

        }
    });


});

编辑:

这是我的问题。在此过程中,如何将信息保存到USER。我的问题是什么时候 我添加下面的代码:

newBeliefs.author.id = req.user._id;  newBeliefs.author.username = req.user.username;

...我收到一条错误消息,表示还没有用户。怎么解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以创建新的LocalStrategy,如果用户不存在,或者用户名和密码与现有用户匹配,则会注册用户。

{name: "Enable", value: 1, flag: "ppp", traverse: "down"}

然后注册新端点:

value