nodejsでpassportjsを使用すると、データベースに挿入しようとすると504エラーが発生します。mongoデータベースへの挿入時にエラーが発生しました
mongoデータベースはアプリケーションサーバーから外部にホストされ、アプリケーションはリバースプロキシの背後にあります(リバースプロキシはアプリケーションポートをポート80に変換します)。これがなぜ起こるか
passport.use(new GoogleStrategy({
clientID: "client_id",
clientSecret: "client_secret",
callbackURL: "oauth_url_callback"
},
function(accessToken, refreshToken, profile, done) {
passport.serializeUser(function(user,done){
mongo.connect(url, function(err,db){
if(err){
console.log(err, ' was the err');
fs.open('views/debug/debug.txt', 'rw', 'a+', function(err,data){
fs.writeFileSync('views/debug/debug.txt', err);
});
done(err);
} else {
db.collection('users').find({profile:profile}, function(err, user) {
if (err) {
fs.open('views/debug/debug.txt', 'rw', 'a+', function(err,data){
fs.writeFileSync('views/debug/debug.txt', err);
});
db.collection('users').insertOne({profile:profile, name:"John Doe"}, function(err, user){
if(err){
console.log("failed to insert", err);
} else {
console.log('Registered a new user!');
}
});
} else {
console.log('We have a returning user!');
}
console.log('testing');
fs.open('views/debug/debug.txt', 'rw', 'a+', function(err,data){
fs.writeFileSync('views/debug/debug.txt', err);
});
done(null, user);
});
}
});
});
}
));
私はわかりませんが、あなたがデータベースに挿入しようとすると、それだけで起こる:
問題は、Mongoのドキュメントに挿入しようとしたときに起こります。ページをリフレッシュすると、トークンの有効期限が切れているというエラーが返されるため、504は表示されません。
また、エラーのログを記録しようとしましたが、エラーはないようです。出力を抽出するための引数としてstdoutとstderrorの両方でプロセスを開始しますが、役に立たないものです。
また、奇妙なデータベースにドキュメント/アイテムを挿入しません。
504はゲートウェイタイムアウトです。プロキシが誤ってmongoポートを転送しようとしていますか?あなたはあなたのアプリケーションサーバからmongoサーバにpingできますか? – ppovoski
mongoサーバーはmlabでホストされており、mongoサーバーへの要求はアプリケーションサーバー上で行われます。私はそれがこれをどうやってできるのか見ていない。私はそれに直接アクセスすることができたと思うけど、私はcloudflareを使用しているので、私のセットアップは別のリバースプロキシの背後にあるはずだ。 – Jacob