使用findOne()查询电子邮件地址

时间:2016-07-05 18:13:50

标签: node.js mongodb sails.js

我正在尝试查询数据库中与用户输入匹配的电子邮件地址。我正在使用findOne(),但不知何故我遇到了问题:

Profile.findOne({emailaddress : req.body.emailaddress},   function(matchinguser) {
            console.dir("matching user" + matchinguser);
            Profile.create(req.params.all(), function (err, profile) {
                console.dir(profile);
                if (err) {
                    req.session.flash = {
                        err: err
                    }
                    return res.redirect('/profile/new')
                }
                res.redirect('/profile')
                req.session.flash = {};
            }) //profile created
        }) //findone

1 个答案:

答案 0 :(得分:0)

我认为代码存在一些问题。回调中缺少的“错误”是其中之一,但我认为你应该使用“exec”。现在,您的函数正在尝试执行,就像在sails.js中格式化本机查询一样。这是我推荐的调整代码:

Profile.findOne({emailaddress : req.body.emailaddress}).exec(err,function(matchinguser) {
     //Handle errors  
     if (err){ return res.negotiate(err);}

     //Handle success
     //I assume do some checks on the user found e.g. return them or if not found create the user
    if(!matchinguser){
     //No user found so redirect back
     return res.redirect('/profile');}
    //Rest of your code can go in here if needed I've just redirected you back for now.
    return res.redirect('/profile/);
    });

我也会小心在你的查询中直接使用req.body.emailaddress而不检查它,但那只是我。