2016-07-05 9 views
-1

Ich versuche eine E-Mail-Adresse in meiner Datenbank abzufragen, die mit der Benutzereingabe übereinstimmt. Ich verwende findOne(), aber irgendwie ich habe Probleme mit sich:Verwenden von findOne() zum Abfragen einer E-Mail-Adresse

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 
+2

Ihre Callback-Funktion 'findOne()' fehlt der Parameter 'err', sie hat nur das Ergebnis (' passinguser' param). Versuchen Sie es 'Profile.findOne ({emailaddress: req.body.emailaddress}, Funktion (err, passinguser) {..' und sehen Sie, wie das geht. – chridam

+1

*" aber irgendwie habe ich Probleme damit: "* erweitern Sie sich sagte "Probleme" –

Antwort

0

Ich denke, es gibt ein paar Probleme mit dem Code sind, wie es steht. Der fehlende "err" im Callback ist einer von ihnen, aber ich denke auch, dass du "exec" benutzen solltest. Momentan versucht Ihre Funktion, so zu arbeiten, wie Sie eine native Abfrage in sails.js formatieren würden. Hier ist meine empfohlen eingestellten Code:

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/); 
    }); 

ich auch vorsichtig sein würde req.body.emailaddress direkt in Ihrer Abfrage verwenden ohne Check-in, aber das ist nur meine Meinung.