2016-06-28 10 views
7

Ich habe einen Wrapper, der das letzte Ergebnis eines Versprechen fängt, formatiert sie und gibt die Daten:Erstellen Sie ein leeres Versprechen, das nur erfüllt?

req.resolve = (promise) => { 
    return promise.then(() => { 
      res.json(req.user); 
     }).catch(Sequelize.ValidationError, err => { 
     // respond with validation errors 
     return res.status(422).send(err.errors); 
    }).catch(err => { 
     // every other error 
     return res.status(400).send({ message: err.message }); 
    }); 
}; 

In einer Ansicht, ich habe nicht ein Versprechen, alles, was passiert ist, dass die Auth-Funktion Trigger fügt req.user hinzu und löst done() aus.

Ich habe versucht, ein Versprechen wie folgt hinzuzufügen, aber es wird nicht gelöst.

app.get('/user/me', auth, 
    (req, res, next) => { 
     req.resolve(new Promise()); 
    }); 
+0

Was ist 'req.resolve()' Rückkehr ohne Parameter übergeben wird? – guest271314

+0

Es gibt nichts zurück, es gibt Daten an den Browser aus. es hat Zugriff auf eine Menge von Daten im req-Objekt, das von express.js verwendet wird – Himmators

Antwort

10

Promise Konstruktor erfordert Executor-Funktion als Parameter. Ersatz Promise.resolve() für new Promise()

+0

dies funktioniert, aber ich bekomme diese Warnung: Warnung: ein Versprechen wurde in einem Handler erstellt, wurde aber nicht von ihm zurückgegeben – Himmators

+1

Versuchen Sie, 'Return 'statement at' return res.json (req.user); '. Was ist der Zweck der geschachtelten '.catch()' Funktionen? – guest271314

Verwandte Themen