私は何時間も検索しましたが、これに関する1つの関連するものを見つけることができませんでした。ExpressでFirebase - .catch(エラー)でクライアントに応答を返せません
私はユーザー(管理者)の認証のために私のエクスプレスウェブサーバでfirebaseを使用しています。私は基本的に、モバイルアプリとは別の管理者のための別個のコントロールパネルを持っているので、ユーザーからのデータを制御することができます。
私は現在、次の処理を行い、このポストアドレスを持っている:
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();
});
});
私はuserExistsResponse();
を持っている方法は、私はそれを持って正確にどのようにではなく、明確化のために、それはそのようなものです。
.catch()
の機能は、console.log()
しか受け入れられないようです。私はを積み重ねることを示唆するthisを見ましたが、それはどのように書いても動作せず、catch(error)
のどちらもうまく動作していないようです。
目的は、ユーザーが認証されていることを確認し、クライアントにメッセージをそのまま表示することです。私は変数をtrue
に設定しようとしました(let userExists = false
変数の残量で分かるように)なしの.then()
ステートメントを実行して関数を呼び出しました(サーバーがエラーで壊れます) YouTubeのビデオ、Firebaseのドキュメント、StackOverflowを見ても、私は有用な答えを見つけられませんでした。
FIXEDクレジット: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');
});
});
これは完全に機能しました。ありがとうございます。私は '.res'関数を' .then() 'に置き、' auth.create ... 'を' .catch() 'エラーに入れます。 –