Ich habe stundenlang gesucht und konnte keine einzige relevante Sache zu diesem Thema finden.Firebase on Express - Antwort kann nicht an Client mit .catch (Fehler) zurückgegeben werden
Ich verwende Firebase auf meinem Express-Web-Server für Benutzer (Admin) Authentifizierung. Ich habe im Grunde eine separate Systemsteuerung für die Admins getrennt von der mobilen App, so dass wir die Daten von den Nutzern kontrollieren können.
Im Moment habe ich diese Post-Adresse, die den folgenden:
app.post('/createNewAdminAccount', function(req, res){
const password = bcryptPassword(bcryptDetails, req.body.password);
const username = req.body.username;
const auth = firebase.auth();
let userExists = false;
function userExistsResponse(){
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify({ "userExists": true }));
}
const promise = auth.createUserWithEmailAndPassword(username, String(password));
promise.catch(function(error){
console.log(error.message);
userExistsResponse();
});
});
So wie ich userExistsResponse();
habe, ist nicht genau, wie ich es habe, aber aus Gründen der Klarheit, dann ist es so.
Es scheint, dass die .catch()
Funktion nur console.log()
akzeptieren kann. Ich sah sogar this, die eine .then(), error(error)
Stapeln vorschlagen, aber das funktioniert nicht, egal wie ich es schreibe, und die Verwendung catch(error)
scheint auch nicht zu arbeiten.
Ziel ist es zu sehen, dass der Benutzer authentifiziert ist und dem Client mit einer Nachricht als solche antwortet. Ich habe versucht, eine Variable auf true
(wie Sie von der übrig gebliebenen let userExists = false
Variable sehen können), eine Funktion, eine Anweisung ohne eine .catch()
(verursacht den Server, um mit einem Fehler zu brechen), etc. zu brechen, usw. Keine funktioniert, Nach dem Durchsehen von YouTube-Videos, der Firebase-Dokumentation und von StackOverflow habe ich keine nützliche Antwort gefunden.
FIXEDCredit: 0x17
app.post('/createNewAdminAccount', authenticated, function(req, res){
const password = String(bcryptPassword(bcryptDetails, req.body.password));
const username = req.body.username;
admin.auth().getUserByEmail(username)
.then(function(userRecord) {
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify({ 'userExists': true }));
console.log('User Exists');
})
.catch(function(error) {
const promise = auth.createUserWithEmailAndPassword(username, password);
promise.catch(function(error){
console.log(error.message);
});
console.log('User Created');
});
});
Das funktionierte perfekt, danke. Ich habe die '.res' -Funktionen in' .then() 'gesetzt und die' auth.create ... 'in den Fehler' .catch() 'gesetzt –