插入 mongo 数据库时出现 504 错误
504 error when inserting into mongo database
将 passportjs 与 nodejs 一起使用时,尝试插入数据库时出现 504 错误。
mongo 数据库在应用程序服务器外部托管,应用程序在反向代理后面(反向代理将应用程序端口转换为端口 80)。
只有在尝试插入 mongo 文档时才会出现此问题:
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);
});
}
});
});
}
));
我不确定为什么会发生这种情况,但它只会在您尝试插入数据库时发生。当我刷新页面时,它不是 504,因为它 returns 错误提示令牌已过期。
我也试过记录错误,似乎没有错误。我以 stdout 和 stderror 作为提取输出的参数开始该过程,但无济于事。
它也没有将 document/item 插入数据库,这很奇怪。
原来我重载了 done 函数,在两个回调中都定义了它两次。我是分别定义的,分别调用的。
将 passportjs 与 nodejs 一起使用时,尝试插入数据库时出现 504 错误。
mongo 数据库在应用程序服务器外部托管,应用程序在反向代理后面(反向代理将应用程序端口转换为端口 80)。
只有在尝试插入 mongo 文档时才会出现此问题:
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);
});
}
});
});
}
));
我不确定为什么会发生这种情况,但它只会在您尝试插入数据库时发生。当我刷新页面时,它不是 504,因为它 returns 错误提示令牌已过期。
我也试过记录错误,似乎没有错误。我以 stdout 和 stderror 作为提取输出的参数开始该过程,但无济于事。
它也没有将 document/item 插入数据库,这很奇怪。
原来我重载了 done 函数,在两个回调中都定义了它两次。我是分别定义的,分别调用的。