2017-04-25 3 views
-1

Ich möchte überprüfen, ob ein Benutzername existiert oder nicht. Ich muss es synchron laufen lassen.Führen Sie eine Mungo-Abfrage synchron mit dem Async-Paket

Wie Sie sehen, Schritt 1 und 2 sollten nacheinander ausgeführt werden. Wissen Sie, wie Sie diese 2 Schritte synchron durch async Bibliothek oder einen besseren Ansatz ausführen? Vielen Dank im Voraus.

+0

_ „Ich habe es laufen synchron“ _. Warum? Kurze Antwort: Sie können nicht. – robertklep

Antwort

1

Verwenden Sie den folgenden Code, ich habe nicht getestet, aber das ist die Art und Weise von dem Asynchron-Modul für Wasserfall zu verwenden: -

let async = require('async'); 
async.waterfall([ 
    function(callback) { 
      User.findOne({'username': string}, function (err, result) { 
       if (err) { 
        callback(true, null); 
       } else { 
        if (!result === null) { 
         username = result.username; 
        } else { 
         username = null; 
        } 
        callback(null, username); 
       } 
      }); 
    }, 
    function (username, callback) { 
      if (username === null) { 
       callback(null, true) 
      } else { 
       callback(null, false) 
      } 
    } 
], function (err, result) { 

    if (err) { 
      req.flash('error', 'An error occured.'); 
      res.redirect("back"); 
    } else { 
      console.log(result);// gives you true/false 
    } 
}) 
+0

Oder der beste Weg, um Middleware für die Überprüfung von Benutzernamen zu haben, auf diese Weise wird die Komplexität in Ihrem Hauptcode weniger sein. – rroxysam

Verwandte Themen